2013-01-10 4 views
11

RSS 피드에서 다양한 세부 정보를 얻기 위해 Python에서 feedparser 라이브러리를 사용하고 있습니다. 내가 뉴스 채널의 RSS 피드에서 25 개의 헤드 라인 타이틀을 꺼냈다 고 가정 해 봅시다. 한 시간 후에 feedparser 명령을 다시 실행하여 25 개의 새로운 헤드 라인의 제목 목록을 가져옵니다. 피드 파서 명령을 두 번 실행하면 목록이 업데이트되거나 업데이트되지 않을 수 있습니다. 일부 헤드 라인은 동일 할 수도 있고 새로운 헤드 라인이있을 수도 있습니다. 나는 뉴스 헤드 라인에 업데이트가 있었는지 여부를 한 시간 앞선 헤드 라인과 함께 확인할 수 있어야합니다. 새 헤드 라인 만 데이터베이스에 푸시해야합니다. 이는 중복 된 데이터베이스로의 덤프를 피하기위한 것입니다. 나는 위의 코드를 매 시간마다 실행하고 헤드 라인 (제목)의 모든 업데이트가 있다면 확인 할 수 있어야합니다Python에서 RSS 피드가 업데이트되었는지 확인하는 방법은 무엇입니까?

import feedparser 
d = feedparser.parse('www.news.example.xml') 
for item in d.entries: 
    hndlr.write(item.title) #data being dumped into a database 

: 아래와 같은

코드가 보인다. 그리고 1 시간 전에 추출 된 데이터가 변경되면 새로운 데이터 만 데이터베이스에 저장해야합니다.

누군가 나를 도울 수 있습니까?

답변

13

각 피드 항목의 식별자는 item.id입니다. 이들을 .updated (또는 .updated_parsed) 항목과 함께 추적하여 새 항목을 확인하십시오.

따라서 항목을 (item.id을 통해) 이미 보았거나 마지막으로 확인한 이후에 업데이트 한 적이 있는지 확인하십시오 (item.updated 또는 item.updated_parsed 통해).

변경된 피드 내용을 확인하려면 피드 프린터 E-Tag support을 사용해야합니다. 이렇게하면 새 항목이없는 피드 만 다운로드 할 수 있습니다. 새 피드 사본을 얻을 때 항목이 추가되거나 업데이트되었는지 감지해야합니다.

"좋은"를
1

당신의 ETag 및 사용할 수 있습니다 피드 마지막 modfied-이후 메커니즘은 여기 http://www.kbcafe.com/rss/rssfeedstate.html

을 설명한 것 그러나 일부 서버를 지원하지 않습니다, 당신은 단순히 포스트 날짜와 ID를 확인하고 볼 필요가 있도록 , 당신은 당신의 DB에 그런 지위를 가지고 있건 없건간에.

관련 문제