我想寫一個python程序,它將抓取並顯示自上次程序運行以來的任何rss更新。我正在使用feedparser並嘗試使用etags,並按here on SO所述進行修改,但我的測試腳本似乎不工作。Python etag /上次修改不起作用;如何獲取最新的rss
import feedparser
rsslist=["http://skottieyoung.tumblr.com/rss","http://mrjakeparker.com/feed/"]
for feed in rsslist:
print('--------'+feed+'-------')
d=feedparser.parse(feed)
print(len(d.entries))
if (len(d.entries) > 0):
etag=d.feed.get('etag','')
modified=d.get('modified',d.get('updated',d.entries[0].get('published','no modified,update or published fields present in rss')))
d2=feedparser.parse(feed,modified)
if (len(d2.entries) > 0):
etag2=d2.feed.get('etag','')
modified2=d2.get('updated',d.entries[0].get('published',''))
if (d2==d): #ideally we would never see this bc etags/last modified would prevent unnecessarily downloading what we all ready have.
print("Arrg these are the same")
我真的不知道,如果RSS/XML技術已經從我一直在使用網上引用更改或是否有我的代碼有問題。
無論我在尋找一個最佳的解決方案來高效地使用rss提要。就目前而言,我正在尋求最大限度地減少帶寬浪費,比如使用最後修改的字段和etags字段。
在此先感謝。
文檔說來使用'feed.etag'。我不知道它是否真的很重要。 –
@NathanVillaescusa不應該不重要。我使用d.feed.get('etag','')作爲處理錯誤的一種方式。就像我這樣做,因爲我沒有使用任何示例似乎會返回一個etag。 –
啊,我想這可能是這樣的。列表中的第一個URL在響應頭中沒有etag,第二個是。 –