我正在使用urllib,urllib2的组合来POST一些表单数据。
以下是我需要提交的表单
<form method="post" action="show_bug.cgi">
<input type="hidden" name="ctype" value="xml">
<input type="hidden" name="id" value="788604">
<input type="hidden" name="id" value="793892">
<input type="hidden" name="id" value="823569">
<input type="hidden" name="id" value="823585">
<input type="hidden" name="id" value="825904">
<input type="hidden" name="id" value="827493">
<input type="hidden" name="excludefield" value="attachmentdata">
<input type="submit" value="XML" id="xml">
</form>
我正在创建[ (name,value), ... ]
由于提交类型元素没有名称,我不知道如何以及是否使用urllib / urllib2发送该元素。
当我尝试将此数据发布到show_bug.cgi时,我收到HTTP404错误。
我对如何POST表单感到困惑,尤其是提交输入类型。到目前为止,我一直认为提交类型的值和ID从不重要,到目前为止它似乎对我有用。
这是TamperData
捕获的帖子请求
答案 0 :(得分:3)
以下请求有效:
from urllib import urlencode
from urllib2 import urlopen
url = 'https://bugzilla.mozilla.org/show_bug.cgi'
data = urlencode([('ctype', 'xml'), ('id', [788604, 793892]),
('excludefield', 'attachmentdata'),
], doseq=True)
response = urlopen(url, data)
print(response.code) # -> 200
xml = response.read()
如果doseq=True
,则('id', [788604, 793892])
被编码为id=788604&id=793892
。
如果没有doseq
,('id', 788604), ('id', 793892)
会产生相同的结果。
答案 1 :(得分:3)