如何使用Mechanize获取http页面?
有一个Python的mechanize对象,它里面有一个表单,几乎所有的值都已经设置好了,但还没有提交。现在我想用这个mechanize实例里的cookies去获取另一个页面,但又不想重置当前的页面、表单等等,也就是说我希望这些值保持不变(我只需要获取另一个页面的内容字符串,别的都不需要)。那么,有没有办法做到以下几点:
- 告诉mechanize不要重置页面(也许可以通过
UserAgentBase
来实现)? - 让
urllib2
使用mechanize的cookie存储?注意:urllib2.HTTPCookieProcessor(self.br._ua_handlers["_cookies"].cookiejar)
这个方法不管用。 - 还有其他方法可以把cookie传给
urllib
吗?
3 个回答
2
我不知道这样做是否有效,但你可以试试对 mechanize 实例进行深拷贝,比如:
from copy import deepcopy
br = Browser()
br.open("http://www.example.com/")
# Make a copy for doing other stuff with
br2 = deepcopy(br)
# Do stuff with br2
# Now do stuff with br
2
一些疯狂的想法:
- 在填写表单之前先获取第二页?
- 或者先获取新页面,然后再返回?不过这样可能会重置之前填写的内容。
5
正确的答案是:
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.br._ua_handlers["_cookies"].cookiejar))
opener.open(imgurl)