2016/03/28更新

[Python] RSSを取得してデータを抜き出す

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
本日は、以前紹介したBeautifulSoupを用いて、RSSからデータを抜き出す方法をブログに書きたいと思います。

画像


目次




事前準備

今回はhttplibモジュールと、BeautifulSoupモジュールを利用します。BeautifulSoupモジュールは標準には含まれないので、以下でインストールします。
$ pip install --upgrade beautifulsoup4
これで準備が完了です。



RSSを取得してデータを抜き出す

今回はiTunes RSSからトップソングのRSSを取得してみたいと思います。RSSのURLは以下です。
https://itunes.apple.com/jp/rss/topsongs/limit=10/xml
これを取得すると以下のようなRSSを取得することができます。
<feed xmlns:im="http://itunes.apple.com/rss" xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
    <id>https://itunes.apple.com/jp/rss/topsongs/limit=10/xml</id>
    <title>iTunes Store: トップソング</title>
    <updated>2016-03-27T04:35:36-07:00</updated>
    <link rel="alternate" type="text/html" href="https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTop?cc=jp&id=26105&popId=1"/>
    <link rel="self" href="https://itunes.apple.com/jp/rss/topsongs/limit=10/xml"/>
    <icon>http://itunes.apple.com/favicon.ico</icon>
    <author>
    <name>iTunes Store</name>
    <uri>http://www.apple.com/jp/itunes/</uri>
    </author>
    <rights>Copyright 2008 Apple Inc.</rights>
    <entry>
        <updated>2016-03-27T04:35:36-07:00</updated>
        <id im:id="1091460872">https://itunes.apple.com/jp/album/feel-so-alive/id1091460870?i=1091460872&uo=2</id>
        <title>Feel So Alive - 三代目 J Soul Brothers from EXILE TRIBE</title>
(以下省略)
ここから、曲名・リンク先URL・視聴URLを取得してみたいと思います。
import urllib.request
from bs4 import BeautifulSoup

# RSSを取得する
url = "https://itunes.apple.com/jp/rss/topsongs/limit=10/xml"
response = urllib.request.urlopen(url)
rss = response.read().decode("utf-8")

# RSSからデータを抽出する
soup = BeautifulSoup(rss, "html.parser")
for entry in soup.find_all("entry"):
    # タイトル
    print(entry.find("title").string)
    # リンク先URL
    print(entry.find("id").string)
    # 視聴URL
    links = [link for link in entry.find_all("link") if link["type"] == "audio/x-m4a"]
    if len(links) > 0:
        print(links[0]["href"])
上記を実行した結果例は以下です。
Feel So Alive - 三代目 J Soul Brothers from EXILE TRIBE
https://itunes.apple.com/jp/album/feel-so-alive/id1091460870?i=1091460872&uo=2
http://a1014.phobos.apple.com/us/r30/Music69/v4/92/06/3c/92063cfd-0cc9-4278-177a-2b1e984cfb6a/mzaf_3113353569796917687.plus.aac.p.m4a
もっと - aiko
https://itunes.apple.com/jp/album/motto/id1092446547?i=1092446553&uo=2
http://a679.phobos.apple.com/us/r30/Music49/v4/1c/ff/a1/1cffa131-8bd7-9107-bfed-e37279537a9a/mzaf_5473511845807714108.plus.aac.p.m4a
友よ ~ この先もずっと・・・ - ケツメイシ
https://itunes.apple.com/jp/album/youyo-kono-xianmozutto/id1091489895?i=1091489900&uo=2
http://a886.phobos.apple.com/us/r30/Music69/v4/78/4e/c1/784ec15c-7c30-0382-38df-77e42d60b93e/mzaf_1019710668249696385.plus.aac.p.m4a
(以下省略)
こんな感じで10行ちょいのコードでRSSからデータを抽出することができます。手軽にできていいですね。
BeautifulSoupの使いかについては、以下でブログを書きましたので参考になれば幸いです。

[Python] httplibとBeautifulSoupを用いてWebクローリングを行い、データを収集する



最後に

今回はPythonを使って、RSSからデータを抜き出す方法をブログに書きました。Web上のデータをアプリケーションに利用したい場合、HTMLやRSSなどいろいろなデータ型から情報を抜き出す必要があります。それらを手軽にできる点で、Pyhtonは非常に良いなぁと思う今日この頃です。

最後になりますが本ブログでは、フロントエンド・Python・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。