PythonとfeedparserでRSSフィードをパースする

Pythonを使ってRSSのフィードをパースしようとしていたんですが、ElementTreeやBeautifulSoupを使って自力でパースするのは面倒くさくて、「feedparser」というモジュールを使ってパースするのが楽で良かったです。

feedparser 5.2.1 : Python Package Index

feedparserのインストール

まずはfeedparserをインストールします。ターミナルでコマンドを打ちます。pipを使ってインストール。

pip install feedparser

管理者権限が無い場合は、

sudo pip install feedparser

ここら辺はいつもどおりです。

feedparserの使い方

feedparserを使ってみます。

feedparser.parseメソッドにURLを渡してあげると、オブジェクトが生成されます。feed.titleとかfeed.linkとかのメソッドを使うとフィードのタイトルとかURLとかを出力してくれます。

# coding: utf-8

import feedparser

url = "https://okuzawats.com/feed"

response = feedparser.parse(url)

print response.feed.title
print response.feed.link

こんな感じで出力されます。

okuzawatsのブログ
https://okuzawats.com

response.entriesとか書くと個々のエントリーの内容にアクセスできます。例えばこんな感じ。

for entry in response.entries:
    title = entry.title
    link  = entry.link
    updated = entry.updated
    print title,link,updated

出力結果。

ITを萌えキャラ化!IT専門用語の解説書「擬人化でまなぼ!」を支援しました https://okuzawats.com/moe-20151118 Wed, 18 Nov 2015 13:54:04 +0000
WordPressで広告などのランダム表示をしてくれるプラグイン「Ads by datafeedr.com」 https://okuzawats.com/ads-20151118 Wed, 18 Nov 2015 08:58:44 +0000
Docomoのガラケーの待ち受け画面に出てくる羊(iコンシェル)を消す方法 https://okuzawats.com/docomo-iconcier-20151117 Tue, 17 Nov 2015 14:34:23 +0000
(以下略)

注意が必要なのは、updatedで吐き出される日付と時刻の形式がブログごとにバラバラだということですね。これについては、feedparserでパースした日付や時刻を適当に処理しないといけないと思います。

追記:

“entry.updated_parsed”とかにすると日時をパースしてくれます。time.struct_timeで返ってきます。

15.3. time — Time access and conversions — Python 2.7.11rc1 documentation

Pythonでの日付や時間を操作するのはそんなに大変ではないです。以下の記事を参考すればできると思います。

Pythonのdatetimeモジュールを使って日付と時刻を操作する

feedparserを使えるようになったので、Pythonを使ってRSSの解析を簡単にできるようになりましたね。これでキュレーションメディアでも作って一攫千金も夢ではありませんネ!

シェアしてもらえるとうれしいです。゚(´っωc`)゚。