PythonでRSSフィードを処理する(feedparserを使う)

PythonRSSリーダーを作りたい時があります。
そういった時はfeedparserモジュールを使用します。

feedparserは標準モジュールではないので、
pip等でインストールします。

pip install feedparser

使い方

RSSフィードのURLを与えてあげると、
FeedParserDictという辞書型に似た形で返してくれます。

ドキュメントを見るとほとんどのパース作業を裏でやってくれているので、
使用する分には何も考えないでも使えてしまいます。

import feedparser
url = "feedのurl"
rss = feedparser.parse(url)

type(rss)
# <class 'feedparser.FeedParserDict'>

#辞書っぽいアクセス
#feedのタイトルとデスクリプション
print(rss['feed']['title'])
print(rss['feed']['description'])

ほとんど辞書型と同様に扱えるので,
keyやvalueを確認して、必要なデータを取り出します。

多くの人が使うのは、記事なのでentriesを見たり、制御のためにupdatedなどをみることが多いのではないでしょうか。

#keyを確認してみる
for k in rss.keys():
    print k
# ['feed', 'status', 'updated', 'updated_parsed', 'encoding', 'bozo', 'headers', 'etag', 'href', 'version', 'entries', 'namespaces']

#記事にアクセスしてみる
for content in rss["entries"]:
    print(content["title"])#各エントリーのタイトル
    print(content["link"])#各エントリーのurl

後はこれらのデータをデータベースに格納したり、
画面に表示すれば、RSSリーダーが作れます。

例えば、複数のサイトからとってきて保存したりするなら下記です。

import feedpaser

#取得するurlのリスト
target_list = [url_のリスト]
#取得した記事のリスト
articles = []

for url in target_list:
    rss = feedparser.parse(url)
    for content in rss["entries"]:
         articles.append(

             (url,
             content["title"],
             content["link"])
         )

#articlesをcsvなどで保存

csvの保存などは下記 esu-ko.hatenablog.com