「ニュースを取得できるAPIを探している」
「プログラムを用いて情報収集を効率化したい」
このような場合には、News APIがオススメです。
この記事では、News APIについて解説しています。
本記事の内容
- News APIとは?
- News APIのAPI Key取得
- News APIの動作確認
それでは、上記に沿って解説していきます。
News APIとは?
News APIとは、ニュースソースからの記事を集めるためのプログラマブルなAPIです。
世界中のさまざまなニュースソースから最新の記事を簡単に検索し、取得することができます。
このAPIを使用することで、ニュース記事を次のようなパラメータに基づいて検索することが可能です。
- キーワード
- ニュースソース
- 言語
- 国
News APIは、基本的に企業による利用が想定されています。
それは、価格表を見ればわかります。
価格は、年間ではなく月間ですからね。
![](https://self-development.info/wp-content/uploads/2024/01/image-2.jpg)
「Developer」が、News APIの無償版になります。
ただし、この無償版にはいろいろと制限があります。
まず、個人・商用の開発・テストでしか用いてはいけません。
つまり、製品やサービスとして公開することはNGと言えます。
あとは、以下の条件となります。
- 24時間遅れの記事が対象
- 1ヶ月まで過去の記事を検索可能
- localhostのCORSが有効
- 1日100リクエストまで
- 追加のリクエストは利用不可
- アップタイムのSLAなし
「localhostのCORSが有効」は、あまり気にする必要はありません。
クライアント側のJavaScriptからAPIを呼び出すことなんて、考えていませんよね?
「アップタイムのSLAなし」は、無償版のため保障なんてないということです。
そりゃ、当然と言えます。
News APIのAPI Key取得
上記ページにある次のボタンをクリックします。
![](https://self-development.info/wp-content/uploads/2024/01/image-12.png)
アカウントの登録画面が表示されます。
必要な情報を入力します。
![](https://self-development.info/wp-content/uploads/2024/01/image-3.jpg)
注意すべきは、以下の項目です。
今回は、「Developer」プランを利用します。
そのため、「I am an individual」を選択することが条件になります。
![](https://self-development.info/wp-content/uploads/2024/01/image-13.png)
入力が完了したら、いきなり次の画面が表示されます。
メール認証も何もありません。
![](https://self-development.info/wp-content/uploads/2024/01/441b949a283ae91798dd39aef8d0cc66.jpg)
メールでもAPI Keyは送信されています。
ここまでの作業により、API Keyを取得できました。
News APIの動作確認
News APIの動作確認を行います。
公式において、以下の言語に対応しているようです。
![](https://self-development.info/wp-content/uploads/2024/01/image-14.png)
今回は、Pythonを利用します。
ライブラリが用意されています。
pip install newsapi-python
最終リリースは、2023年ですね。
その前は、かなり前になります。
![](https://self-development.info/wp-content/uploads/2024/01/image-4.jpg)
サポートしているPythonのバージョンは、以下。
![](https://self-development.info/wp-content/uploads/2024/01/image-15.png)
このサポート状況を見て、一瞬狼狽えるかもしれません。
おそらく、0.2.7の更新時にsetup.pyの更新で漏れているだけでしょう。
あと、「Pure Python」であるため、正直バージョンは関係ありません。
![](https://self-development.info/wp-content/uploads/2024/01/image-16.png)
実際、以下のPythonでも問題なくインストールできています。
> python -V Python 3.10.4
サンプルコードも次のページで確認できます。
ログインしていれば、取得したAPI Keyがセットされているはずです。
https://newsapi.org/docs/client-libraries/python
何個か関数がありますが、今回は次の関数を検証してみましょう。
![](https://self-development.info/wp-content/uploads/2024/01/image-5.jpg)
「get_everything」関数の定義は、以下。
辞書型のデータとして値を返すようです。
![](https://self-development.info/wp-content/uploads/2024/01/image-6.jpg)
各パラメータについては、次のページで説明されています。
https://newsapi.org/docs/endpoints/everything
今回は、次のように引数を設定します。
from newsapi import NewsApiClient import pprint newsapi = NewsApiClient(api_key='取得したAPI Key') all_articles = newsapi.get_everything(q='大谷翔平', from_param='2024-01-01', to='2024-01-07', sort_by='relevancy', page=1) pprint.pprint(all_articles)
上記を実行した結果、100件の記事を取得できています。
ただ、検索にヒットした全件は以下となっています。
'totalResults': 156
残りの56件を取得する場合は、
同じ条件で「page」を「2」とします。
all_articles = newsapi.get_everything(q='大谷翔平', from_param='2024-01-01', to='2024-01-07', sort_by='relevancy', page=2)
ちなみに2ページ目の1件目は、次の記事となっています。
![](https://self-development.info/wp-content/uploads/2024/01/image-7.jpg)
ソースは、結構幅広くのサイトを対象にしているようです。
なお、ソースの指定はあまり有効ではありません。
指定できるのは、基本的には海外の大手メディアです。
それらは、以下で確認できます。
sources = newsapi.get_sources()
次のように「id」が「None」のソースは、指定することができません。
![](https://self-development.info/wp-content/uploads/2024/01/image-17.png)