我正在尝试跳过未使用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。
为什么我没有得到预期的结果?
答案 0 :(得分:18)
显然,此服务器配置为检查“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