Python RSS Parser, который также обрабатывает FeedBurner - PullRequest
4 голосов
/ 20 апреля 2011

Я был в процессе написания скрипта Python для парсера для RSS-каналов.Я использую feedparser, однако, я застрял на разборе каналов из FeedBurner.Кому нужен FeedBurner сегодня?В любом случае ..

Например, я не смог найти способы разбора

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

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

Когда я помещал их вбиблиотека feedparser, похоже, не работает.Попытка поставить? Fmt = xml или? Format = xml в конце URL-адресов, но все еще не получила в формате xml.

Нужно ли использовать html-парсер, такой как BeautifulSoup, для разбора каналов FeedBurner?Предпочтительно, есть ли уже открытый скрипт синтаксического анализатора или агрегатора на python, который уже обрабатывает это?

Ответы [ 2 ]

4 голосов
/ 20 апреля 2011

Возможно, у вас проблема с версией или вы используете API неправильно - это поможет увидеть ваше сообщение об ошибке.Например, следующее работает с Python 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>'
2 голосов
/ 13 февраля 2012

Я знаю, что этот вопрос очень старый, но я полагаю, что для любого, кто столкнется с ним, было бы полезно найти решение для анализа RSS-каналов feedburner, чтобы вставить простой код, который у меня есть для получения последней записи из Cracked .com feedburner. Я проверил его на нескольких других сайтах, и он отлично работает.

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 на любой адрес страницы FeedBurner. Также, как вы, вероятно, видите, если есть какие-то другие элементы, которые вы хотите, вы можете добавить просто добавив туда дополнительную строку getElementsByTagName, с тем, что вы хотели бы получить.

Редактировать: также, насколько мне известно, будет работать практически со всеми RSS-лентами.

...