0

我正在使用 mechanize 浏览器进行一些网页抓取并使用以下代码。我意识到在某些情况下,尽管远程页面已经更改,但我们仍然获得相同的页面。所以我的问题是:

  1. 默认情况下(在某些配置中)是否机械化浏览器实例缓存页面?
  2. 如果是这样,我们如何更改它,或者有没有办法避免缓存(除了每次在我们网络抓取的循环中创建浏览器实例)

    # put int login detail and submit, return a mechanize.Browser instance 
    browser = _login() 
    # main loop
    while True:
        rsp = browser.open(URL)
        html = rsp.read()
    

谢谢

4

1 回答 1

3

根据这个线程

Mechanize 实例会缓存您访问过的页面,但您可以使用 agent.history.clear 清除它;或通过设置 agent.history.max_size = 0 来防止保存历史记录。或者,您可以完全使用新的 Mechanize 实例。

特别,

当前,如果带有 If-Modified-Since 标头的请求导致 304 Not Modified,则 Mechanize 会重用会话历史记录中的页面。

根据此处的文档,在 Python 中,以下代码将阻止类似缓存的行为(可搜索响应):

import mechanize
ua = mechanize.UserAgent()
ua.set_seekable_responses(False)
ua.set_handle_equiv(False)
ua.set_debug_responses(False)

希望能提供一些见解。

于 2013-10-04T14:08:09.090 回答