Cookie是否在打​​开网址之间的Mechanize浏览器中保存?

时间:2014-05-24 01:19:20

标签: python mechanize mechanize-python

我的代码类似于:

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()

但是,我的脚本响应时没有登录第二个请求。我检查了第一个请求,是的,它成功登录。我的问题是:机械化浏览器中的Cookie是否需要管理,或者我是否需要设置CookieJar或其他内容,还是为您跟踪所有这些?

第一个示例here讨论了请求之间传输的cookie,但他们没有谈论浏览器。

1 个答案:

答案 0 :(得分:2)

是的,您必须将cookie存储在open之内的mechanize个请求之间。类似于下面的内容应该可以正常工作,因为您可以将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()

Docs更详细地介绍了它。

我使用perl mechanize很多,但不是python所以我可能错过了一些特定的python工作,所以如果我这样做,我道歉,但我我不想用简单的yes回答。