我希望能够在网站上查询运行此脚本的计算机上的保修信息。如果需要,它应该能够填写表格(比如说HP的服务站点),然后就可以检索生成的网页。
我已经有了一些位来解析生成的html报告回来我只是遇到了需要做什么的麻烦,以便对需要放入字段的数据进行POST然后进行能够检索生成的页面。
答案 0 :(得分:16)
如果你绝对需要来使用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以获得一个好例子。
答案 1 :(得分:1)
data = urllib.urlencode([('field1',val1), ('field2',val2)]) # list of two-element tuples
content = urllib2.urlopen('post-url', data)
内容会为您提供页面来源。
答案 2 :(得分:0)
我只做了一点,但是:
name
属性。urllib.urlencode
将字典转换为帖子请求的正文。urllib2.Request()
的第二个参数包含在内。服务器将返回生成的网页,或返回重定向到生成的网页。如果它执行后者,您需要向重定向响应中指定的URL发出GET
请求。
我希望这有点道理吗?