如何使用Mechanize获取http页面?

3 投票
3 回答
1722 浏览
提问于 2025-04-15 14:46

有一个Python的mechanize对象,它里面有一个表单,几乎所有的值都已经设置好了,但还没有提交。现在我想用这个mechanize实例里的cookies去获取另一个页面,但又不想重置当前的页面、表单等等,也就是说我希望这些值保持不变(我只需要获取另一个页面的内容字符串,别的都不需要)。那么,有没有办法做到以下几点:

  1. 告诉mechanize不要重置页面(也许可以通过UserAgentBase来实现)?
  2. urllib2使用mechanize的cookie存储?注意:urllib2.HTTPCookieProcessor(self.br._ua_handlers["_cookies"].cookiejar)这个方法不管用。
  3. 还有其他方法可以把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)

撰写回答