Python 请求模块缓存网站?

Python requests module caching websites?

当我使用 python 模块请求网站时,我没有得到一个最新的网页,而是一个缓存的网站。

据我所知,不应该对请求进行缓存,还是我错了?

finanzennet_request = requests.get('http://finanzen.net/aktien/Tesla-Aktie')
print(finanzennet_request)

产生以下结果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- CacheEngine generated: 87039 chars in 0,0313 seconds on 26.08.2015 21:39:07 from NT -->

如您所见,上面写着 "CacheEngine generated...." 。 真的是网络服务器识别出我的脚本不是真实用户,因此只给我一个缓存版本吗? 如果是这样,我该如何避免它?

在对您认为可能是请求网页的 script-related 行为进行故障排除时,请在假设 user-agent 或 headers 之类的内容导致与远程网络服务器。

你在 Chrome、Safari 和 Firefox 中为我指定的 returns 那 'CacheEngine' 行。

当您遇到一个页面确实以不同的请求内容响应时,我建议您首先考虑设置您的 User-Agent field。虽然您可以通过指定请求远程而不缓存内容:

{'cache-control': ' private, max-age=0, no-cache'}

在 headers 中,请记住,这只是对远程网络服务器的 请求,不会为您提供缓存的内容。

对于伪装成浏览器请求 non-cache 内容的总请求,这看起来像这样:

url='http://finanzen.net/aktien/Tesla-Aktie'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36',
    'cache-control': 'private, max-age=0, no-cache'
}
response = requests.get(url, headers=headers)

将近两年后,通过我的 stackoverlow 问题,我找到了问题。

我当时没有看到它,但是如果您打开我之前作为评论发布到 user559633 的 Comparison Requests vs Chrome,您会发现这两个实际上是不同的域。使用 chrome 我正在访问 finanzen.at 并使用请求 finanzen.net

长话短说:这是我网站上的一个错误,没有请求缓存网站或网络服务器根据用户检测更改响应。