LoginSignup
68
95

More than 5 years have passed since last update.

【データサイエンスの基礎】pythonでRSSからデータ収集

Last updated at Posted at 2015-05-23

前記事

一応シリーズ続き。今後も取得したデータ解析とかも続けて書いていく予定。(予定)

今回はYahoo!ニュースからRSSでデータ取得してニュースの見出しとリンクを出力するまでをやります。

$ python yahoo_news_rss.py

で、

Yahoo!ニュース・トピックス - トップ
http://dailynews.yahoo.co.jp/fc/world/nuclear_weapons/?id=6160968
NPT決裂 文書採択できず閉幕
http://dailynews.yahoo.co.jp/fc/domestic/injury_case/?id=6160975
家族ら切られ4人死傷 男逮捕
http://dailynews.yahoo.co.jp/fc/economy/coffee_chain/?id=6160962
スタバ鳥取オープンに千人超
http://dailynews.yahoo.co.jp/fc/economy/apparel/?id=6160961
6月契約終了のバーバリー好調
http://dailynews.yahoo.co.jp/fc/science/life_on_earth/?id=6160969
「ゼロ」の概念をサル認識か
http://dailynews.yahoo.co.jp/fc/sports/prowrestling/?id=6160973
初代タイガーマスク 緊急手術
http://dailynews.yahoo.co.jp/fc/entertainment/broad_casting/?id=6160945
生中継に反発 安藤優子氏混乱
http://dailynews.yahoo.co.jp/fc/domestic/obituary/?id=6160936
闘病のアイドル 丸山さん死去

がでてくるところまでの簡単なRSSの使いかたを解説します。

RSSとは

RSSは、ニュースやブログなど各種のウェブサイトの更新情報を簡単にまとめ、配信するための幾つかの文書フォーマットの総称である。

wikiより。
つまり、本物スクレイピングしたら手間なところ、情報取得用に簡単にまとめられてるものて感じかな。

moduleを揃える。

feedparserのインストール

RSSフィードの解析にはfeedparserを利用します。

とのことなので、feedparserインストールこれが参考になった。

feedparserの働き

ドキュメントを参照するとわかるのですが、以下の二つのkeyはおさえておきましょう。

entries

A list of dictionaries. Each dictionary contains data from a different entry. Entries are listed in the order in which they appear in the original feed.

feed

A dictionary of data about the feed.

それぞれの内部のkeyに関しては、ドキュメントに一覧になっているのでそちらをさらに参照。

RSSの取得と表示

yahooがこんな感じでRSS提供しています。
のでこのURL叩いて帰ってきたXMLをdictionaryにparseしてやるのが以下。

yahoo_news_rss.py
import feedparser

RSS_URL = "http://rss.dailynews.yahoo.co.jp/fc/rss.xml"

yahoo_news_dic = feedparser.parse(RSS_URL)

これで、ニュースがdictionaryに入る。どんな構造で入っているかはfeedparserのドキュメント見つつ。

んで以下が、全体のtitleとそれぞれの記事のタイトルとリンクを表示するところ。

yahoo_news_rss.py
print yahoo_news_dic.feed.title

for entry in yahoo_news_dic.entries:
  title = entry.title
  link  = entry.link
  print link
  print title

で、冒頭にあったように

Yahoo!ニュース・トピックス - トップ
http://dailynews.yahoo.co.jp/fc/world/nuclear_weapons/?id=6160968
NPT決裂 文書採択できず閉幕
http://dailynews.yahoo.co.jp/fc/domestic/injury_case/?id=6160975
家族ら切られ4人死傷 男逮捕
http://dailynews.yahoo.co.jp/fc/economy/coffee_chain/?id=6160962
スタバ鳥取オープンに千人超
http://dailynews.yahoo.co.jp/fc/economy/apparel/?id=6160961
6月契約終了のバーバリー好調
http://dailynews.yahoo.co.jp/fc/science/life_on_earth/?id=6160969
「ゼロ」の概念をサル認識か
http://dailynews.yahoo.co.jp/fc/sports/prowrestling/?id=6160973
初代タイガーマスク 緊急手術
http://dailynews.yahoo.co.jp/fc/entertainment/broad_casting/?id=6160945
生中継に反発 安藤優子氏混乱
http://dailynews.yahoo.co.jp/fc/domestic/obituary/?id=6160936
闘病のアイドル 丸山さん死去

てな感じで出てくる。

以上、ソースコードはこちらにも。

68
95
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
95