14

我正在尝试跳过未使用 feedparser 和 etags 修改的 RSS 提要。遵循文档的指导方针:http: //pythonhosted.org/feedparser/http-etag.html

import feedparser

d = feedparser.parse('http://www.wired.com/wiredscience/feed/')
d2 = feedparser.parse('http://www.wired.com/wiredscience/feed/', etag=d.etag)

print d2.status

这输出:

200

这个脚本不应该返回 304 吗?我的理解是,当 RSS 提要更新时,etag 会发生变化,如果它们匹配,那么我应该得到 304。

为什么我没有得到预期的结果?

4

1 回答 1

21

显然,此服务器配置为检查“If-Modified-Since”标头。您还需要传递上次修改时间:

>>> d = feedparser.parse('http://www.wired.com/wiredscience/feed/')
>>> feedparser.parse('http://www.wired.com/wiredscience/feed/', 
                     etag=d.etag, modified=d.modified).status
304
>>> feedparser.parse('http://www.wired.com/wiredscience/feed/', 
                     etag=d.etag).status
200
于 2013-05-27T09:17:31.583 回答