2011-04-19 1 views
4

RSS 피드 용 파이썬 파서 스크립트를 작성하는 중이었습니다. 그러나 FeedBurner에서 피드를 파싱하는 데 어려움을 겪고 있습니다. 요즘 누가 FeedBurner를 필요로합니까? 어쨌든 .. 예를 들어Python RSS FeedBurner도 처리하는 파서

, 나는 작동하지 않는 구문 분석하는 방법

http://feeds.wired.com/wired/index

http://feeds2.feedburner.com/ziffdavis/pcmag

나는 feedparser 라이브러리에 사람을 넣어 를 찾을 수 없습니다. URL 끝에 fmt = xml 또는? format = xml을 넣으려고했지만 xml 형식으로 표시되지 않았습니다.

피드 버너 피드를 구문 분석하기 위해 BeautifulSoup와 같은 html 파서를 사용해야합니까? 가급적이면 이미 이것을 처리하는 파이썬 공용 파서 또는 애그리 게이터 스크립트가 있습니까?

팁이나 도움을 주시면 대단히 감사하겠습니다.

답변

4

버전 문제가 있거나 API를 잘못 사용하면 오류 메시지가 표시 될 수 있습니다. 예를 들어, 다음 파이썬 2.7에서 작동 및 feedparser 5.0.1 :

>>> import feedparser 
>>> url = 'http://feeds2.feedburner.com/ziffdavis/pcmag' 
>>> d = feedparser.parse(url) 
>>> d.feed.title 
u'PCMag.com: New Product Reviews' 
>>> d.feed.link 
u'http://www.pcmag.com' 
>>> d.feed.subtitle 
u"First Look At New Products From PCMag.com including Lab Tests, Ratings, Editor's and User's Reviews." 
>>> len(d['entries']) 
30 
>>> d['entries'][0]['title'] 
u'Canon Color imageClass MF9280cdn' 

그리고

다른 URL과 함께 :

>>> url = 'http://feeds.wired.com/wired/index' 
>>> d = feedparser.parse(url) 
>>> d.feed.title 
u'Wired Top Stories' 
>>> d.feed.link 
u'http://www.wired.com/rss/index.xml' 
>>> d.feed.subtitle 
u'Top Stories<img src="http://www.wired.com/rss_views/index.gif" />' 
>>> len(d['entries']) 
30 
>>> d['entries'][0]['title'] 
u'Heart of Dorkness: LARPing Goes Haywire in <em>Wild Hunt</em>' 
+0

지시 사항을 준수하십시오. Ars 감사합니다. 나는 방금 내가 d [ 'entries']의 빈 결과를 얻었을 때 무언가를 잘못 입력 했음에 틀림 없다. – DavidL

+0

@DavidL : 지금은 다행이다. 나는 "mistyping error"에 대해 잘 알고 있습니다. :-) – ars

2

내가이 질문은 아주 오래된 것을 알고,하지만 난 그게 될 것이다 그림 피드 버너 RSS 피드를 구문 분석하여 Cracked.com 피드 버너에서 최신 항목을 가져 오는 간단한 코드를 붙여 넣을 수있는 솔루션을 검색하여 누구에게나 도움이됩니다. 나는 다른 몇몇 위치에 그것을 시험하고 잘 작동한다.

def GetRSS('RSSurl'): 
    url_info = urllib.urlopen(RSSurl) 
    if (url_info): 
     xmldoc = minidom.parse(url_info) 
    if (xmldoc): 
     url = xmldoc.getElementsByTagName('link').firstChild.data 
     title = xmldoc.getElementsByTagName('title').firstChild.data 
     print url, print title 

RSSurl을 피드 버너 페이지의 주소로 바꾸십시오. 또한 보시다시피, 원하는 다른 요소가 있으면 추가 getElementsByTagName 행을 거기에 추가 할 수 있습니다. 원하는대로 가져 가십시오.

편집 : 또한 내 지식으로는 거의 모든 RSS 피드에서 작동합니다.