さて、最後の更新からおよそ10ヶ月経ってしまいました。毎週更新が目標だったのに。。というわけで、今後は毎月更新に下方修正してこれからも頑張りたいと思います(?)。さて復活第一弾はNews APIを使ってみた、です。RSSリーダーのような機能を自作のWebアプリにも搭載してみたいなと思い、試しに使ってみたのでここでまとめてみます。
「News API」とは世界中のニュースをかき集めたサービスで、利用者はREST APIでニュースを取得できます。無償版・有償版があり、HPを確認する限りでは有償版は企業でも利用されているようですが、記事更新が24時間遅れ、100リクエスト/日などの制約に目を瞑れば十分有用だと思うので今回は無償版を利用させていただきましょう。また、今回Pythonを使用してAPIを叩きますが、その他にもNode.js, Ruby, PHP, Java, C#が利用できるようです。利用までの大まかな流れは以下の通りです。めっちゃ簡単です。イージーピージー。
一般的に、サービス利用時に求められる情報の提供さえすればAPIキーは取得可能なので、ここは省きます。
News APIには「Everything」/v2/everything
と「Top headlines」/v2/top-headlines
の2種類のエンドポイントがありますが、今回は「Everything」を使います。それぞれパラメータが異なるので注意してください。
newsapi-python
というライブラリが使われているようですが、PythonでのHTTP通信によく使われるrequests
で代用可能なので今回はこちらを使います。その他、取得したデータを整形するためのpandas
もインポートします。
apiKey
はNews API登録時に取得したものです。また今回のニュース検索では検索クエリとしてq
、検索対象言語としてlanguage
、検索条件としてsortBy
、期間指定としてfrom
とto
を設定しています。検査対象言語としては残念ながら日本語は設定できませんが、英語をはじめいくつかの言語が設定できるようです。デフォルトでは言語に関係なく返されますが、今回はフランス語(fr
)を設定してみました。検索条件にはpopularity
を設定しており、閲覧数の多いソース・出版社からの記事が優先されます。最後に、期間指定を指定しました。get()
メソッド内にパラメーター(params
)と一緒に設定します。レスポンスはjson()
メソッドを利用しJSON形式としてパースします。articles
という配列の中に格納されているので、この部分だけ抜き出しますが、今回はJSON形式からの変換となるため、pd.DataFrame()
メソッドではなくjson_normalize()
メソッドを利用します。今回はあえてフランス語での検索をしてみましたが、日本語のキーワードを入力すれば日本語の記事が返ってきます。しかし前述の通り日本語指定検索は非対応のため、一部中国語の記事が返されてしまいました。その後正規表現ライブラリを利用すればできなくはないですが、使いこなすには色々と工夫が必要そうです。
よろしければこちらの記事も参考にしてみてください。
Loading...