5

RSSフィード用のPythonパーサースクリプトを書いている最中です。私はfeedparserを使用していますが、FeedBurnerからのフィードの解析に固執しています。最近FeedBurnerが必要なのは誰ですか?いずれかの方法..

たとえば、解析する方法が見つかりませんでした

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

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

それらをfeedparserライブラリに入れると、機能しないようです。URLの最後に?fmt = xmlまたは?format = xmlを入れようとしましたが、それでもxml形式になりませんでした。

FeedBurnerフィードを解析するには、BeautifulSoupなどのHTMLパーサーを使用する必要がありますか?できれば、これをすでに処理しているpython public parserまたはaggregatorスクリプトはありますか?

ヒントやヘルプは大歓迎です。

4

2 に答える 2

5

バージョンに問題があるか、APIを誤って使用している可能性があります。エラーメッセージを確認すると便利です。たとえば、以下はPython2.7およびfeedparser5.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>'
于 2011-04-19T21:48:16.740 に答える
2

この質問は非常に古いものですが、Feedburner 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をfeedburnerページのアドレスに置き換えるだけです。また、おそらくおわかりのように、必要な要素が他にある場合は、getElementsByTagName行を追加するだけで、取得したい要素を追加できます。

編集:また、私の知る限り、ほとんどすべてのRSSフィードで機能します。

于 2012-02-13T09:45:07.650 に答える