我对使用Python自动化某些任务很感兴趣。具体来说,我想使用Python与网站进行交互,以执行诸如从页面获取特定信息、发出请求(发布数据和读取响应)以及下载和上载文件等任务。
到目前为止,我只能使用Python从使用urllib2的页面获取HTML。接下来我试着向一个页面发送请求;我试了几次,但都失败了。>>> import urllib2
>>> import urllib
>>> url = "http://www.stackoverflow.com/"
>>> values = {}
>>> values["input"] = "foo"
>>> data = urllib.urlencode(values)
>>> request = urllib2.Request(url + "search/", data)
>>> response = urllib2.urlopen(request)
>>> html = response.read()
>>> print html
到目前为止,我的理解方式是,我需要创建一个包含字段和输入名称的字典,并用urllib.urllencode(values)对其进行编码。然后我需要用urllib2.request(urlReceivingEnterQuest,data,headers)发出一个请求,如果只给一个url,它将只得到一个,但是如果给一个数据,它将发布,并且可以给一个headers,这个headers可以把程序伪装成一个公共浏览器,比如Firefox或IE.I,然后用urllib2.urlopen(request)得到一个响应,这个响应返回一个类似于文件的对象因此,我可以阅读。据我所知,我还可以使用urllib2.build_opener(),它可以接收处理程序(可以处理cookie、重拨、身份验证等),并使用.add headers(“用户代理”)添加头。我希望最终能够做(并理解)所有这些事情,但是,首先,我想提交一份表格。
在上面与Python交互的代码中,我是否遵循了正确的过程?(我试图在stackoverflow首页的搜索字段中输入搜索“foo”。)