设置Mechanize接受Cookies

2 投票
1 回答
1083 浏览
提问于 2025-04-18 09:59

我正在尝试使用mechanize从一个网站获取一些数据,以便自动化搜索公寓(不是为了刷屏)。

但是,当我向这个网站发送请求时,返回的响应包含以下头信息:

header: Cache-Control: no-store, no-cache, max-age=0, must-revalidate, private,  max-     stale=0, post-check=0, pre-check=0
header: Content-Type: text/html
header: P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI"
header: Date: Mon, 16 Jun 2014 19:13:23 GMT
header: Connection: close
header: Set-Cookie: SPSI=1f5cf9461ca8ab1ee7f4d427ce1c895b ; path=/
header: Content-Length: 10965

而且响应的内容大概是说“你必须启用cookies”。我该如何用mechanize来模拟这个呢?

我尝试这样做,但似乎不管用:

br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

顺便说一下,我使用的是mechanize 0.2.5。如果这个方法不行,我在考虑使用Selenium。

1 个回答

0

我也遇到过同样的问题。可以添加这些浏览器选项。具体可以参考这里:http://stockrt.github.io/p/emulating-a-browser-in-python-with-mechanize/

 # Browser options
 br.set_handle_equiv(True)
 br.set_handle_gzip(True)
 br.set_handle_redirect(True)
 br.set_handle_referer(True)
 br.set_handle_robots(False)

 # Follows refresh 0 but not hangs on refresh > 0
 br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

我还建议使用调试信息,这样可以更好地找到问题所在。

 # Want debugging messages?
 #br.set_debug_http(True)
 #br.set_debug_redirects(True)
 #br.set_debug_responses(True)

撰写回答