Mechanize 浏览器在打开 URL 之间会保存 cookies 吗?
我有一段类似这样的代码:
br = mechanize.Browser()
br.open("https://mysite.com/")
br.select_form(nr=0)
#do stuff here
response = br.submit()
html = response.read()
#now that i have the login cookie i can do this...
br.open("https://mysite.com/")
html = response.read()
不过,我的脚本在第二次请求时好像没有登录。我检查了第一次请求,确实成功登录了。我的问题是:在Mechanize浏览器中,是否需要自己管理cookies,还是说我需要设置一个CookieJar之类的东西,或者它会自动帮我管理所有的cookies呢?
第一个例子在这里提到cookies在请求之间是可以传递的,但没有提到浏览器的相关内容。
1 个回答
2
是的,你需要在使用 mechanize
时,在不同的 open
请求之间保存 cookie
。下面的代码应该可以实现这个功能,你可以把 cookiejar
加到 br
对象中,只要这个对象还存在,它就会保持那个 cookie
。
import Cookie
import cookielib
cookiejar =cookielib.LWPCookieJar()
br = mechanize.Browser()
br.set_cookiejar(cookiejar)
br.open("https://mysite.com/")
br.select_form(nr=0)
#do stuff here
response = br.submit()
html = response.read()
#now that i have the login cookie i can do this...
br.open("https://mysite.com/")
html = response.read()
详细的内容可以参考 文档。
我经常使用 perl
的 mechanize
,但对 python
不太熟悉,所以可能漏掉了一些 python
特有的内容,如果有遗漏我很抱歉,但我不想只简单地回答一个 yes
。