簡體   English   中英

Python使用機械化提交帖子數據

[英]Python submit post data using mechanize

我必須提交到服務器的網址看起來像這樣:

www.mysite.com/manager.php?checkbox%5B%5D=5&checkbox%5B%5D=4&checkbox%5B%5D=57&self=19&submit=Go%21

我這樣發布的數據:

data = {'checkbox%5B%5D': '4', ....and so on... 'self': '19', 'submit': 'Go%21'}

我編碼:

data = urllib.urlencode(orbs)

這就是我的運行方式:

resp = mechanize.Request('http://mysite.com/manager.php', data)
cj.add_cookie_header(resp)
res = mechanize.urlopen(resp)
print res.read()

錯誤說:我沒有選擇任何項目。 因為我有嵌套表單,如何不使用br.select_form(nr = 0)就可以正確地做到這一點? 謝謝。

您對復選框字段名稱進行了雙重編碼; 您應該使用checkbox[]而不是checkbox%5B%5D 另外,由於該鍵名已被重用,因此您可能無法使用字典來收集參數。

網址編碼是將字符串(即[[]])更改為百分比編碼的字符串(即'%5B%5D')的過程,而URL解碼是相反的操作。 所以:

checkbox%5B%5D=5&checkbox%5B%5D=4&checkbox%5B%5D=57&self=19&submit=Go%21

在解碼之后:

checkbox[]=5&checkbox[]=4&checkbox[]=57&self=19&submit=Go!

在您的代碼中,您實際上是在編碼一個已經編碼的網址:

data = {'checkbox%5B%5D': '4', ....and so on... 'self': '19', 'submit': 'Go%21'}
data = urllib.urlencode(orbs)

而是使用解碼后的數據並將其傳遞給urlencode:

data = {'checkbox[]': '4', ....and so on... 'self': '19', 'submit': 'Go!'}
data = urllib.urlencode(orbs)

暫無
暫無

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

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