エミ眠太の自由帳
 エミ眠太の自由帳
    
 
 やってみた      2024-09-14      

News APIでニュースを取得する。

Language:
 Python
Framework/Library:
Technology:
 REST API Web API JSON RSS
Platform/Tool:

記事一覧へ

目次


はじめに

さて、最後の更新からおよそ10ヶ月経ってしまいました。毎週更新が目標だったのに。。というわけで、今後は毎月更新に下方修正してこれからも頑張りたいと思います(?)。さて復活第一弾はNews APIを使ってみた、です。RSSリーダーのような機能を自作のWebアプリにも搭載してみたいなと思い、試しに使ってみたのでここでまとめてみます。

News APIとは

「News API」とは世界中のニュースをかき集めたサービスで、利用者はREST APIでニュースを取得できます。無償版・有償版があり、HPを確認する限りでは有償版は企業でも利用されているようですが、記事更新が24時間遅れ、100リクエスト/日などの制約に目を瞑れば十分有用だと思うので今回は無償版を利用させていただきましょう。また、今回Pythonを使用してAPIを叩きますが、その他にもNode.js, Ruby, PHP, Java, C#が利用できるようです。利用までの大まかな流れは以下の通りです。めっちゃ簡単です。イージーピージー。

  1. 利用登録・APIキー取得
  2. APIを叩く

1. 利用登録・APIキー取得

一般的に、サービス利用時に求められる情報の提供さえすればAPIキーは取得可能なので、ここは省きます。

2. APIを叩く

News APIには「Everything」/v2/everything「Top headlines」/v2/top-headlinesの2種類のエンドポイントがありますが、今回は「Everything」を使います。それぞれパラメータが異なるので注意してください。

「一行解説」を見る
  1. (l.1-3) 公式ドキュメントを確認するとnewsapi-pythonというライブラリが使われているようですが、PythonでのHTTP通信によく使われるrequestsで代用可能なので今回はこちらを使います。その他、取得したデータを整形するためのpandasもインポートします。
  2. (l.5-12) HTTPリクエスト時のパラメータを設定しています。apiKeyはNews API登録時に取得したものです。また今回のニュース検索では検索クエリとしてq、検索対象言語としてlanguage、検索条件としてsortBy、期間指定としてfromtoを設定しています。検査対象言語としては残念ながら日本語は設定できませんが、英語をはじめいくつかの言語が設定できるようです。デフォルトでは言語に関係なく返されますが、今回はフランス語(fr)を設定してみました。検索条件にはpopularityを設定しており、閲覧数の多いソース・出版社からの記事が優先されます。最後に、期間指定を指定しました。
  3. (l.13-15) URLにはAPIのエンドポイントを、get()メソッド内にパラメーター(params)と一緒に設定します。レスポンスはjson()メソッドを利用しJSON形式としてパースします。
  4. (l.17) 最後にJSON形式のままでは利用しづらいため、DataFrame形式に変換しましょう。実際の記事データは、articlesという配列の中に格納されているので、この部分だけ抜き出しますが、今回はJSON形式からの変換となるため、pd.DataFrame()メソッドではなくjson_normalize()メソッドを利用します。

まとめ

今回はあえてフランス語での検索をしてみましたが、日本語のキーワードを入力すれば日本語の記事が返ってきます。しかし前述の通り日本語指定検索は非対応のため、一部中国語の記事が返されてしまいました。その後正規表現ライブラリを利用すればできなくはないですが、使いこなすには色々と工夫が必要そうです。


記事をシェアする


関連する記事

よろしければこちらの記事も参考にしてみてください。

Loading...




記事一覧へ