저는 프로그램을 마지막으로 실행 한 이후로 rss 업데이트를 가져와 표시 할 Python 프로그램을 작성하려고합니다. feedparser을 사용 중이며 etags를 사용하려고 시도했지만 마지막으로 here on SO으로 수정했지만 테스트 스크립트가 작동하지 않는 것으로 보입니다.Python etag/last modified not working; 최신 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 기술은 I 온라인 사용하고 참조에서 변경된 경우 솔직히 잘 모르겠어요 또는 내 코드에 문제가있는 경우.
관계없이 RSS 피드를 효율적으로 사용하기위한 최상의 솔루션을 찾고 있습니다. 그것은 내가 마지막으로 수정 된 및 etags 필드의 사용에 의해 의도와 같은 대역폭 낭비를 최소화하기 위해 찾고 있어요. 사전에
감사합니다.
문서의 정보는 다음의 제품에 말한다 나는 이전 요청의 최대 날짜보다 작은 날짜를 각 항목의 날짜를 확인하고 무시하도록 코드를 수정 것 'feed.etag'을 사용하십시오. 나는 그것이 정말로 중요하더라도 모르겠다. –
@NathanVillaescusa 아니, 그건 중요하지 않아. 오류를 처리하는 방법으로 d.feed.get ('etag', '')을 사용하고 있습니다. 그것은 내가 사용하는 예제 중 어느 것도 etag를 반환하지 않기 때문에이 방법으로 수행합니다. –
아, 그런 것 같아요. 목록의 첫 번째 URL에는 응답 헤더에 etag가없고 두 번째 URL에는 응답 헤더가 있습니다. –