我期望能够在该脚本将运行的计算机上查询站点的保修信息。如果需要的话,它应该能够填写表格(就像惠普的服务网站那样),然后就可以检索生成的网页。Python urllib2自动填写表单并检索结果
我已经有了一些位来解析报告的结果html我只是遇到了麻烦,需要做什么才能做一个POST的数据需要放在字段中,然后能够检索结果页面。
我期望能够在该脚本将运行的计算机上查询站点的保修信息。如果需要的话,它应该能够填写表格(就像惠普的服务网站那样),然后就可以检索生成的网页。Python urllib2自动填写表单并检索结果
我已经有了一些位来解析报告的结果html我只是遇到了麻烦,需要做什么才能做一个POST的数据需要放在字段中,然后能够检索结果页面。
我只是做了这一点,但是:
name
属性。urllib.urlencode
将字典转换为您的发布请求的正文。urllib2.Request()
的第二个参数包含在表单应提交到的URL之后。服务器将返回结果网页,或返回重定向到生成的网页。如果是后者,则需要向重定向响应中指定的URL发出GET
请求。
我希望能有某种意义?
如果你绝对需要使用的urllib2,基本要点是:
import urllib
import urllib2
url = 'http://whatever.foo/form.html'
form_data = {'field1': 'value1', 'field2': 'value2'}
params = urllib.urlencode(form_data)
response = urllib2.urlopen(url, params)
data = response.read()
如果你沿着POST数据(第二个参数urlopen()
)发送请求的方法将自动设置为POST。
我建议你自己帮忙,并使用mechanize,这是一个完全成熟的urllib2替代品,其功能与真正的浏览器完全相同。很多网站都使用隐藏字段,cookie和重定向,默认情况下,urllib2都不会为您处理这些内容,机械化的作用就在此处。
退房Emulating a browser in Python with mechanize就是一个很好的例子。
我也会投入机械化。我已经使用过很多次了。真的很有用,比urllib和urllib2更容易做复杂的事情。 – 2011-04-14 20:33:43
我同意。机械化是做这件事的标准工具。除非你绝对必须,否则不要使用urllib2。 – 2011-04-14 20:42:58