次の方法で共有


クイック スタート: Python と Bing News Search REST API を使用してニュース検索を実行する

警告

2020 年 10 月 30 日、Bing Search API は Azure AI サービスから Bing Search Services に移行されました。 このドキュメントは参考用に提供されています。 更新されたドキュメントについては、 Bing検索 API のドキュメントを参照してください。 Bing検索用の新しい Azure リソースを作成する手順については、「 Azure Marketplace を使用して Bing Search リソースを作成する」を参照してください。

このクイック スタートを使用して、Bing News Search API を初めて呼び出します。 この単純な Python アプリケーションは、検索クエリを API に送信し、JSON の結果を処理します。

このアプリケーションは Python で記述されていますが、API はほとんどのプログラミング言語と互換性のある RESTful Web サービスです。

MyBinder で Jupyter Notebook としてこのコード サンプルを実行するには、起動バインダー バッジを選択します。

起動バインダー

このサンプルのソース コードは、 GitHub でも入手できます。

Azure リソースを作成する

次のいずれかの Azure リソースを作成して、Bing News Search API の使用を開始します。

Bing Search v7 リソース

  • リソースを削除するまで、Azure portal から使用できます。
  • Free 価格レベルを使用してサービスを試し、後で運用環境用の有料レベルにアップグレードします。

マルチサービス リソース

  • リソースを削除するまで、Azure portal から使用できます。
  • 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。

アプリケーションを作成して初期化する

お気に入りの IDE またはエディターで新しい Python ファイルを作成し、要求モジュールをインポートします。 サブスクリプション キー、エンドポイント、検索用語の変数を作成します。 次のコードでグローバル エンドポイントを使用するか、Azure portal に表示される カスタム サブドメイン エンドポイントをリソースに使用できます。

import requests

subscription_key = "your subscription key"
search_term = "Microsoft"
search_url = "https://api.cognitive.microsoft.com/bing/v7.0/news/search"

要求のパラメーターを作成する

キーとして Ocp-Apim-Subscription-Key を使用して、サブスクリプション キーを新しいディクショナリに追加します。 検索パラメーターに対して同じ操作を行います。

headers = {"Ocp-Apim-Subscription-Key" : subscription_key}
params  = {"q": search_term, "textDecorations": True, "textFormat": "HTML"}

要求を送信して応答を取得する

  1. 要求ライブラリを使用して、サブスクリプション キーと前の手順で作成したディクショナリ オブジェクトを使用して、Bing Visual Search API を呼び出します。

    response = requests.get(search_url, headers=headers, params=params)
    response.raise_for_status()
    search_results = json.dumps(response.json())
    
  2. JSON オブジェクトとして search_results に格納されている API からの応答に含まれる記事の説明にアクセスします。

    descriptions = [article["description"] for article in search_results["value"]]
    

結果を表示する

これらの説明は、検索キーワードが太字で強調表示されたテーブルとしてレンダリングできます。

from IPython.display import HTML
rows = "\n".join(["<tr><td>{0}</td></tr>".format(desc)
                  for desc in descriptions])
HTML("<table>"+rows+"</table>")

次のステップ