【Python】Googleニュースをスクレイピングする

 

Googleニュースを好きなキーワード自動的に取得できたら便利ですよね。

 

今回の記事では、自分の好きなキーワードを入力して、ニュースを自動的に取得するコードをPyhtonで書いてみましょう。

 

スポンサーリンク

 

Googleニュース

 

Googleニュースは検索すると出てくると思いますが、こんな感じのものです。

 

 

 

キーワードを入れると自分の好きなニュースが取得できます。私はサッカーが好きなので、

j2リーグと検索します。もちろん、好きなキーワードを入れていただいて構いません。

 

 

赤枠の部分がニュース記事です。今回はこのニュースをPythonを使って取得してみましょう。

 

feedparserをインストールする

 

feedparserは、anacondaでもpipでもインストールできます。

 

anacondaを使っている方は、anaconda navigatorで検索、pipでインストールしたい方は以下のようにしてください。

 

 

URLを決定する

 

コーディングに入る前に、Googleのニュース(RSSフィード)を取得するためのURLを決める必要があります。

 

 

 

この★の部分に、検索キーワードを入れます。今回の検索キーワードは「j2リーグ」ですが、そのまま入れるわけではなく、URLエンコーディングします。

 

試しに、下のサイトでutf-8を選択してURLエンコーディングしてみます。

 

http://charset.7jp.net/urlchg.html

 

「j2リーグ」 → 「j2%e3%83%aa%e3%83%bc%e3%82%b0」

 

こんな感じでURLエンコーディングされた文字列が出てきました。これを★に入れてコード内で使用します。

 

 

2018/11/29日追記:

Pythonでは、URLエンコーディングするためのライブラリが用意されてましてこれを使うと自動でできました。

 

コーディング

 

それでは、コーディングしていきましょう。

 

処理としては、

  1. urlをfeedparserでパースする
  2. ニュース記事リストを、for文で回して各記事のタイトルやソートキーを取得
  3. 最後に日付順にソート

ソートキーというのは日付を羅列した数値です。これを元にソートすることで、記事を投稿順に表示することができます。

 

get_google_news.py

 

enumerateを使うと、for文のループ回数を取得できます。取得した記事の順番に1,2…と番号を振っています。

 

実行結果は以下の通り。

 

 

下の方が、新しい記事になっています。台風でヴァンフォーレ甲府の試合が中止になったみたいですね。汗

 

こんな感じで短いコードでさくっと記事を取得できるようです。

 

取得した記事をjson形式で保存したい場合は、以下の通り。json.dumpで保存、json.loadで読み取りです。それぞれ2行で書けるのは素晴らしいですね。

 

 

ちなみに、スクレイピングしたデータは以下のページで公開しています。

http://nokkun.pythonanywhere.com/news

 

まとめ

・ニュース記事を取得するには、Pythonのfeedparserを使おう
・日付順にソートするためには、ソートキーを作成しよう
・データはjsonで保存すると楽