簡體   English   中英

使用python請求提交表單並獲取結果

[英]use python requests to submit a form and get results

我對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=resolution&resolution=resolution&分辨率= UP&S = EXPIRED&分辨率= MOVED&順序= bug_id&限制= 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 ,而想要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
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

似乎為我工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM