浏览器实例是否来自机械化缓存?

时间:2013-10-04 13:07:10

标签: python caching mechanize

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

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

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

1 个答案:

答案 0 :(得分:3)

根据this thread

  

Mechanize实例会缓存您访问过的网页,但您可以清除   与agent.history.clear;或防止历史被拯救   设置agent.history.max_size = 0.或者,您可以使用新的Mechanize   完全是一个例子。

特别地,

  

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

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

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

希望能提供一些见解。