[Python] News APIからニュース記事を検索する

Python

世界中のニュースソースから、現在および過去のニュース記事を単純な REST APIで取得できるサービスとして
News APIというサイトが存在しています。
News APIは基本的には有料のサービスですが、開発目的の場合は無償で利用することができます。
本記事では、PythonでNews APIからREST APIを使って最近のニュース記事を検索してみたいと思います。

News API – Search News and Blog Articles on the Web
Get JSON search results for global news articles in real-time with our free News API.

ユーザ登録

まずはAPIを利用する際にAPI Keyが必要になるためユーザ登録します。
メールアドレスがあれば簡単に無料で登録できます。

Get API Keyをクリックします。

登録画面が表示されますので、すべての項目を入力して、Submitを選択します。

API Keyが表示されますので、こちらの文字列をコピーしておきます。
後からでもログイン後の画面でAPI Keyを確認できます。

newsapi-pythonパッケージのインストール

専用のnewsapi-pythonパッケージが用意されているので、pip installコマンドでインストールします。

> pip install newsapi-python
Collecting newsapi-python
  Downloading newsapi_python-0.2.7-py2.py3-none-any.whl (7.9 kB)
Requirement already satisfied: requests<3.0.0 in 
  :
Installing collected packages: newsapi-python

ニュースを検索してみる

サイトに以下のようなサンプルが用意されているのですが、うまく結果が返ってこない状況になりましたので、
簡単なサンプルコードを載せておきます。

「2025年」という単語でニュース検索した結果を、1件だけ表示するようにしています。

from newsapi import NewsApiClient
newsapi = NewsApiClient(api_key='xxxxxxxx')
all_articles = newsapi.get_everything(q='2025年', page_size=1, page=1)
print(all_articles)

以下のような実行結果を取得できます。
サンプルスクリプトでは all_articlesを出力しているだけですので、このような結果で出力されますが、
ディクショナリ型としてデータが格納されていますので、加工もしやすいと思います。

{'status': 'ok', 'totalResults': 16866, 'articles': [{'source': {'id': None, 'name': 'Gizmodo.jp'}, 'author': 'かみやまたくみ', 'title': 'もしかして2025年って、「ゲーム機が変わる年」ですか?', 'description': 'Image:MiguelLagoa/Shutterstock.com2024年は ゲーム機関連でさまざまな発表があり、うわさも多く流れたのが印象的でした。今になって振り返って見たら、おもしろかった。来年、Switch2以外にも“何かある”んじゃって印象を受けました。この記事では2024年のゲーム機関連の話題を振り返りつつ、「ゲームの世界で大きな 変化が起こる日」が近い説を唱えてみようかと思います。Sw', 'url': 'https://www.gizmodo.jp/2024/12/rewind-rumor-game-consoles-and-so-on.html', 'urlToImage': 'https://media.loom-app.com/gizmodo/dist/images/2024/12/26/shutterstock_2448335723.jpg?w=1280&h=630&f=jpg', 'publishedAt': '2024-12-30T02:04:00Z', 'content': '2024Switch 2\r\n2024\r\nSwitch 2\r\n20153Nintendo Switch9Switch2024SwitchNintendo Direct6\r\n IR (@NintendoCoLtd) May 7, 2024\r\nSwitch\r\nSwitch 220251\r\nSwitch 2Switch 2\r\nPlayStation PortalPS5PS5PS5PS Portal\r\nP… [+677 chars]'}]}

get_everything関数の引数の詳細については、こちらを参考にしてください。

Everything - Documentation - News API

一部、Python APIではオプションが異なっている箇所がありました(pageSizeがpage_sizeになっているなど)ので、
API Referenceも参照していただくことをおススメします。

Welcome: Documentation for newsapi-python — newsapi-python 0.2.7 documentation

まとめ

無償で利用する場合はいくつか制限もありますが、日本語検索もできますので、
ニュースを検索したり収集したりするには十分かと思います。

コメント

タイトルとURLをコピーしました