我对python的请求不熟悉。我需要做一件事。这是链接:https://bugzilla.mozilla.org/buglist.cgi?bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=INCOMPLETE&resolution=SUPPORT&resolution=EXPIRED&resolution=MOVED&order=bug_id&limit=10

下面有一个xml按钮。如果单击此按钮,将显示一个xml页面。我希望我可以使用python代码自动获取xml内容。

xml按钮的该页面上的html是:


<form method="post" action="show_bug.cgi">
<input type="hidden" name="ctype" value="xml">
<input type="hidden" name="id" value="35">
<input type="hidden" name="id" value="36">
<input type="hidden" name="id" value="37">
<input type="hidden" name="id" value="38">
<input type="hidden" name="id" value="39">
<input type="hidden" name="id" value="41">
<input type="hidden" name="id" value="42">
<input type="hidden" name="id" value="43">
<input type="hidden" name="id" value="51">
<input type="hidden" name="id" value="61">
<input type="hidden" name="excludefield" value="attachmentdata">
<input type="submit" value="XML" id="xml">
</form>



我尝试使用请求。我试过这样的代码:

import requests
values = { 'submit': 'xml'}
req = requests.post('https://bugzilla.mozilla.org/buglist.cgi?bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&query_format=advanced&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=INCOMPLETE&resolution=SUPPORT&resolution=EXPIRED&resolution=MOVED&order=bug_id&limit=10',data=values)
print req.text


但我有错误。

有人可以帮助我指出请求的正确用法吗?谢谢。

最佳答案

您如何安装requests?如果出现导入​​错误,则可能没有安装所有依赖项。请参阅此处的讨论:https://github.com/kennethreitz/requests/issues/513

另外,您似乎输入了错误的URL。您不想获取原始的buglist.cgi,而是想要发布到show_bug.cgi,因为这是表单操作的目标。您还需要包括隐藏表单字段的所有值:

import requests
values = {}
values['ctype'] = 'xml'
# Multiple values for the same name are handled via array
values['id'] = [35, 36, 37, 38, 39, 41, 42, 43, 51, 61]
values['excludefield'] = 'attachmentdata'
req = requests.post('https://bugzilla.mozilla.org/show_bug.cgi', data=values)
print req.text

关于python - 使用python请求提交表单并获取结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20052515/

10-13 08:09