[英]Submitting a form using Requests Python
所以我想自動填寫和提交表單,我正在使用Requests
來做到這一點。
通過檢查元素,我知道要提交的 url 和提交的類型(帖子):
method="post"
action="/sformsubmit"
enctype="multipart/form-data"
我的問題是我的請求沒有通過並且對此相當陌生,我不知道為什么。
在我的網頁上,我有兩個並排的按鈕,如下所示:
___________________________ ________________________________
| Submit decleration | | Reset Form |
___________________________ ________________________________
當我檢查那條線上的元素時,我得到:
<td align="center" colspan="2">
<input type="hidden" name="inLeader" value>
<input type="hidden" name="inMember" value>
<input type="hidden" name="version" value="0">
<input type="hidden" name="key" value="2013:a:c:3:2s">
<input type="submit" value="Submit declaration">
<input type="reset" value="Reset form">
</td>
我正在嘗試以下操作:
>>> payload = {'inLeader':'', 'inMember':'', 'version':'0', 'key':'2013:a:c:3:2s'}
但是它似乎不起作用並且不會產生任何錯誤。
任何幫助將不勝感激。 提前致謝
好的,您的有效載荷是錯誤的。 但。 我不確定更改它是否真的有幫助,因為您沒有包含收到的錯誤消息。
payload = {
'inLeader':'',
'inMember':'',
'version':'0',
'key':'2013:a:c:3:2s',
}
關於 HTML 表單和 POST 請求,您需要了解的是,當您單擊表單上的提交按鈕時,它會發送具有name
屬性的任何字段的value
屬性。 例如,類型為submit
的輸入字段不會被發送。 它沒有name
。 我懷疑inLeader
和inMember
字段沒有數據。 這是通過Javascript以某種方式設置的嗎?
您在評論中提到您需要登錄才能訪問表單? 這很可能意味着您還需要隨請求一起發送正確的 cookie。 因此,訪問我被要求輸入用戶名/密碼的 URL。 該網站正在使用基本身份驗證。
requests
支持這一點。 下面的例子:
import requests
from requests.auth import HTTPBasicAuth
requests.get(url, auth=HTTPBasicAuth('your username', 'your password'))
試着發出一個 get 請求,看看你是否至少能得到 200 個響應。 這意味着身份驗證正在工作。 然后你可以嘗試做實際的帖子。
你可以用機械湯!
import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()
browser.open("https://YOURSITE.example") #<Response [200]>
browser.select_form('form CSS selector') #Right Click on element in inspect and select copy as CSS selector
browser["inLeader"] = ""
browser["inMember"] = ""
#and more!
response = browser.submit_selected()
了解更多: https ://mechanicalsoup.readthedocs.io/en/stable/tutorial.html
好工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.