Bing News Search APIを使ってニュース記事を取得する手順

公開日:2019/12/10 更新日:2019/12/10
Bing News Search APIを使ってニュース記事を取得する手順のサムネイル

はじめに

Microsoft Azureには色々なサービスがありますが、その中に最新のニュース記事を取得できるBing News Search APIというものがあります。この記事では、Bing News Search APIを使用できるようにするまでの手順と実際にwgetコマンドでニュースを取得する手順をまとめます。

前提と環境

以下が前提となります。

  • Microsoft Azureアカウントは作成済とする

Bing Search APIの利用価格は以下の公式ドキュメントに記載されています。無料枠として1000回のリクエスト(月)が用意されています。また、Microsoft Azureアカウントを新しく作成すると執筆時点で2万円分相当のクレジットも付与されるので十分試せると思います。

azure.microsoft.com

Bing Search APIs では、使用した分だけのお支払いになります。Microsoft Azure Cognitive Services の Bing Search APIs の価格オプションを確認し、比較できます。

Bing News Search APIを追加する

まずはじめにBing News Search にアクセスし、「Bing News Searchを試す」をクリックします。

bing-news-search-top-page.png

以下のようにアカウントの取得状態に応じて選択肢が表示されるので、各自の状況に合わせて選択します。ここではMicrosoft Azureアカウントは取得済とし、「Azure アカウントをお持ちの場合」で「サインイン」をクリックして進めます。もしまだAzureアカウントを取得していない場合はまず取得してみてください。

select-your-account.png

Microsoft Azureアカウントにログインすると以下のようにこれから追加するBing News Search APIの設定を入力するフォームが表示されます。

form-for-search-api.png

「価格レベル」は「F1」(無料枠)を選択します。「リソースグループ」は適当に「新規作成」から作成しました。「リソースグループの場所」も日本に設定しています。最終的に以下のように入力しました。入力して利用規約を読んだ上でチェックを入れ、「作成」をクリックして進みます。

my-setup-for-search-api.png

「デプロイ中」と表示され少々時間がかかるのでデプロイが完了するまで待機します。

deploying-edited.png

デプロイが完了すると以下のように表示されます。「リソースに移動」をクリックします。

complete-deploy-edited.png

以下のようにBing Search API用のAPIキーとエンドポイントを確認できます。

your-api-endpoint.png

後はこれら2つの情報を使って実際にニュースを取得してみます。

wgetでニュースを取得する

Bing Search APIで指定できるオプション等は以下の公式ドキュメントに記載されています。

docs.microsoft.com

Describes the programming elements of the Bing News Search API.

最新ニュースを取得する

その時点での最新ニュースを取得したい場合は以下のようにwgetコマンドで特にオプション等は指定せずにGETリクエストを送信します。

$ wget --header='Ocp-Apim-Subscription-Key: asia97y3h9237h97aweir9a7wh39t7a' 'https://yourapi.cognitiveservices.azure.com/bing/v7.0/news'

リクエストヘッダとしてOcp-Apim-Subscription-Key:に自身のAPIキーを渡します。asia97y3h9237h97aweir9a7wh39t7aがAPIキー部分です。これを各自のAPIキーに置換してください。また、https://yourapi.cognitiveservices.azure.com/bing/v7.0/newsは各自のエンドポイントになりますのでここも各自のものに置換してください。

上記を実行すると「news」という名のファイルがコマンドを実行した時のディレクトリ下に作成され、内容は以下のようにJSON形式になります。

{
    "_type": "News",
    "webSearchUrl": "https:\/\/www.bing.com\/news\/search?q=&nvaug=%5bNewsVertical+CategoryBrowseRequest%89%123%12+Category%89%33rt_MaxClass%22+ResultsPerCategory%89%123%11%5d&form=AAAA00",
    "value": [
        {
            "name": "中国シャオミが日本上陸--1億画素スマホや炊飯器など“高コスパ ...",
            "url": "https:\/\/japan.cnet.com\/article\/35146586\/",
            "image": {
                "thumbnail": {
                    "contentUrl": "https:\/\/www.bing.com\/th?id=ON.8D24276DB3555FDBAE91615CC72363D4&pid=News",
                    "width": 640,
                    "height": 480
                }
            },
            "description": "スマートフォン大手の中国シャオミは12月9日、日本市場参入を発表した。同社では、すでに90の国と地域で展開している。 同社は、サムスン、ファーウェイ、アップルに次ぐ、世界第4位のスマートフォンメーカー。7人の創業メンバーのうち3人がデザインの ...",
            "provider": [
                {
                    "_type": "Organization",
                    "name": "CNET"
                }
            ],
            "datePublished": "2019-12-09T07:15:00.0000000Z",
            "category": "ScienceAndTechnology",
            "headline": true,
            "ampUrl": "https:\/\/m.japan.cnet.com\/amp\/story\/35146586\/"
        },
        {
            "name": "【今朝の5本】仕事始めに読んでおきたいニュース",
            "url": "https:\/\/www.bloomberg.co.jp\/news\/articles\/2019-12-09\/Q28YYZDWLU7A01",
            "image": {
                "thumbnail": {
                    "contentUrl": "https:\/\/www.bing.com\/th?id=ON.5FEBB3EACDE5F85570F193C397FCBAE1&pid=News",
                    "width": 700,
                    "height": 418
                }
            },
            "description": "ボルカー元FRB議長死去、対中関税15日発動なさそうと米農務長官 モルガンS人員削減、ソフバンク融資枠、BofAの無料化戦略 1980年代に米連邦準備制度理事会(FRB)議長として米国の狂乱インフレを大胆な政策で鎮静化させ、後のオバマ政権で ...",
            "about": [
                {
                    "readLink": "https:\/\/myapi.cognitiveservices.azure.com\/api\/v7\/entities\/79464325-4ebf-5477-3c6f-975a3cb4d4a4",
                    "name": "Michael Bloomberg"
                }
            ],
            "mentions": [
                {
                    "name": "Michael Bloomberg"
                },
                {
                    "name": "United States"
                },
                {
                    "name": "Port of Los Angeles"
                }
            ],
            "provider": [
                {
                    "_type": "Organization",
                    "name": "ブルームバーグ"
                }
            ],
            "datePublished": "2019-12-09T20:21:00.0000000Z",
            "category": "World",
            "headline": true
        },
        {
(以降省略)

"value"の中にニュースが格納されています。

カテゴリを指定してニュースを取得する

カテゴリを指定して最新ニュースを取得することもでき、以下のようにcategoryパラメータを付与します。以下はカテゴリとして「ScienceAndTechnology」を指定しています。

$ wget --header='Ocp-Apim-Subscription-Key: asia97y3h9237h97aweir9a7wh39t7a' 'https://yourapi.cognitiveservices.azure.com/bing/v7.0/news?category=ScienceAndTechnology'

なお、指定できるカテゴリについては、公式ドキュメントの指定可能なカテゴリ名一覧(言語別) に記載されています。

キーワードを指定してニュースを取得する

キーワードを指定してのニュース取得も可能で、エンドポイントとしてhttps://yourapi.cognitiveservices.azure.com/bing/v7.0/news/searchを使用します。

$ wget --header='Ocp-Apim-Subscription-Key: asia97y3h9237h97aweir9a7wh39t7a' 'https://yourapi.cognitiveservices.azure.com/bing/v7.0/news/search?count=10&q=microsoft&sortBy=date'

上記では、count=10が取得件数を10件、q=microsoftがキーワードとして「microsoft」、sortBy=dateが時系列順でソートをそれぞれ指定しています。

まとめ

Bing News Search APIを使ってニュース記事を取得する手順をまとめました。この記事ではwgetコマンドを使用しましたが、後はPythonやNode.jsなどお好きな言語でHTTPリクエストを作成すれば同様の結果を取得できます。

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。