簡體   English   中英

使用請求 Python 提交表單

[英]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 我懷疑inLeaderinMember字段沒有數據。 這是通過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.

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