[英]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.