Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
96
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@shunsuke227ono

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

前記事

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

今回は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
闘病のアイドル 丸山さん死去

てな感じで出てくる。

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

96
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
96
Help us understand the problem. What is going on with this article?