世界中のニュースソースから、現在および過去のニュース記事を単純な REST APIで取得できるサービスとして
News APIというサイトが存在しています。
News APIは基本的には有料のサービスですが、開発目的の場合は無償で利用することができます。
本記事では、PythonでNews APIからREST 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関数の引数の詳細については、こちらを参考にしてください。
一部、Python APIではオプションが異なっている箇所がありました(pageSizeがpage_sizeになっているなど)ので、
API Referenceも参照していただくことをおススメします。
まとめ
無償で利用する場合はいくつか制限もありますが、日本語検索もできますので、
ニュースを検索したり収集したりするには十分かと思います。
コメント