News APIへの登録とPythonでニュースを取得するまでの手順

はじめに
News APIは、いくつかのニュースサイトからトップニュースや条件指定して合致したニュースをJSON形式で取得できるAPIです。例えばBBC NEWSやTechCrunchなどに対応しています。2019年5月時点では30,000ほどのニュースサイト等のソースに対応しています。このNews APIはPythonやRuby、Node.jsなどでクライアントも用意されており、これらクライアントを使用すれば簡単にニュース情報を取得することができます。この記事では、実際にNews APIを使用してニュースを取得するまでの手順をまとめます。
できるようになること
以下のようなJSON形式のデータをPythonから取得します。以下はTechCrunchのヘッドニュースをリクエストした場合に返ってくるJSONデータです。
また、国、カテゴリ、ニュースサイト、キーワード等の条件を指定して合致したニュースを取得することができます。
News APIについて
News APIは、30,000ほどのソースから横断的にニュースを取得するためのAPIです。APIの使用回数に制限はあるものの、オープンソースや個人利用の目的ならば無料で使用することができます。商用利用したい場合は有料プランに申し込む必要があります。以下が公式サイトへのリンクになります。
各プランの内容については以下に記載されています。
前提と環境
以下の通りです。
- OS : Ubuntu18.04
- Python 3.7
News APIのAPIキーを取得する
News APIを使用するには、まずNews APIにユーザー登録する必要があります。登録ページはこちらRegister for API keyです。Developerアカウントの場合は登録に必要な情報はメールアドレスのみです。登録ページにアクセスすると以下のようなページが表示されます。
登録ページの各項目の内容は以下です。
| First name | お名前。ユーザ名 |
| Email adress | メールアドレス |
| Choose a password | パスワード |
| You are... | 個人利用か商用利用の選択。個人利用の場合はI am an individualを選択します。 |
| I agree to the terms | 利用規約への同意チェックボックス。利用規約を読んだ上でチェックを入れます。 |
| I promise to add an attribution link on my website or app to NewsAPI.org | アプリもしくはWebサイトにNewsAPIへのリンクを貼ることを約束してください という意味です。例えば、"Powered by News API"のような表記します。良ければチェックを入れます。 |
各項目に入力、選択して「Submit」ボタンをクリックすると、以下のように「Your API key is:」の下にAPIキーが表示されますのでこれを使用します。
上記で「My account」をクリックすると、自身のアカウント情報に加えてAPI使用回数などの状態やNews APIのステータスを確認できます。
以上でNews APIのAPIキーの取得は完了です。以降で実際にPythonからNews APIをつかってニュース情報を取得してみます。
News APIとPythonを使ってニュースを取得する
News APIのWebサイトにドキュメントが用意されており、そこで非公式ではあるもののNews API用のクライアントのためのライブラリが紹介されています。この記事ではこのライブラリを使用します。まず以下でインストールします。
試しに以下のようなサンプルコードでTechCrunchのトップニュースを取得してみます。以下ではトップニュースの1件のみ出力するようにしています。以下のコード内のYOUR_API_KEYを各自のAPIキーに置き換えてください。
上記を実行すると以下のような結果が得られます。
News APIで取得できるJSONのフォーマットは、以下のようになっています。
条件を指定してトップニュースを取得する
以下のコードのように、条件を複数指定して合致したニュースを取得することもできます。
categoryとして指定できるのは、business、entertainment、general、health、science、sports、technologyです。
なお、sourcesを指定した場合、categoryまたはcountryと組み合わせて使用することができません。
その他のパラメータや詳細は以下に載っています。
This endpoint provides live top and breaking headlines for a country, specific category in a country, single source, or multiple sources. You can also search with keywords. Articles are sorted by the earliest date published first.
過去のニュースを取得する
get_everythingを使うことでトップニュース以外にも過去のニュースを取得することができます。以下では、キーワードとしてgoogle、ソースをtechcrunchに指定して合致するニュースを全て取得しています。
実行結果は以下です。
期間を指定して過去のニュースを取得する
以下のようにfrom_paramとtoを使うことで特定の期間のニュースを取得することができます。
なお、公式ドキュメントでは、fromというパラメータになっていましたが、こちらでは動作しませんでした。GitHubで公開されているソースを見ると、from_paramが使えるようになっており、これを使うことで動作しました。
並べ替えをして過去のニュースを取得する
以下のようにsort_byパラメータを与えることで並び替えできます。以下はpopularity(人気順)で並べ替えています。デフォルトではニュースの公開日の降順並べ替えされています。
その他のパラメータや詳細は以下に載っています。
Search through millions of articles from over 30,000 large and small news sources and blogs. This includes breaking news as well as lesser articles.
まとめ
News APIを使用することで簡単に様々なサイトのニュース情報を取得することができます。これを使用すればニュースアプリの作成もできそうです。
関連記事
公開日:2019/06/03 更新日:2019/06/03自然言語処理ライブラリのGiNZAを使って係り受け解析を試す
自然言語処理ライブラリのGiNZAを使って係り受け解析を行ってみたのでその手順をまとめます。指定した文章の係り受け木を作成して、単語間の修飾関係を可視化してみます。また、条件に合致する文章の検索、名詞節の抽出も行います。
公開日:2019/04/16 更新日:2019/04/16MeCabをインストールしてPythonで動作させるまでの手順
日本語による文章を解析してみたいと思い、色々調べたところMeCabという形態素解析エンジンがあることを知りました。自然言語処理自体に全く縁がありませんでしたが、手始めとしてMeCabをインストールして実際に動作させたのでその手順をメモします。
公開日:2019/04/15 更新日:2019/04/15UbuntuにAnacondaをインストールしてPythonとJupyter Notebookを動かすまでの手順
AnacondaをUbuntuにインストールしました。Anacondaをインストールすることで、PythonとJupyter Notebookの環境が構築できます。ここではその手順をメモします。
公開日:2016/03/13 更新日:2016/03/13vagrant上のUbuntuでTensor Flowを動かすまでの手順
Tensor FlowはGoogleが2015年11月にオープンソース化して公開した機械学習ライブラリです。少し興味を持ったのでまずはTensor Flowを動かすための環境として、vagrant上のubuntuにインストールして動作させてみました。その手順をメモします。




