下面有一个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
但是我遇到了错误。
有人可以帮我指出正确的请求用法吗?感谢。
答案 0 :(得分:2)
您是如何安装requests
的?如果您收到导入错误,则可能没有安装所有依赖项。请参阅此处的讨论:https://github.com/kennethreitz/requests/issues/513。
此外,您似乎遇到了错误的网址。您不想获取原始buglist.cgi
,您想要POST到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
答案 1 :(得分:0)
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
似乎对我有用。