クイック スタート: Python を使用して Bing Web Search API を呼び出す

警告

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

このクイック スタートを使用して、Bing Web Search API を初めて呼び出します。 この Python アプリケーションは、API に検索要求を送信し、JSON 応答を表示します。 このアプリケーションは Python で記述されていますが、API はほとんどのプログラミング言語と互換性のある RESTful Web サービスです。

この例は、MyBinderで Jupyter ノートブックとして実行されます。 これを実行するには、起動バインダー バッジを選択します。

バインダー

前提条件

Azure リソースを作成する

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

Bing Search v7 リソース

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

マルチサービス リソース

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

変数の定義

  1. subscription_key の値を、Azure アカウントの有効なサブスクリプション キーに置き換えます。

    subscription_key = "YOUR_ACCESS_KEY"
    assert subscription_key
    
  2. Bing Web Search API エンドポイントを宣言します。 次のコードでグローバル エンドポイントを使用することも、リソースの Azure portal に表示される カスタム サブドメイン エンドポイントを使用することもできます。

    search_url = "https://api.bing.microsoft.com/v7.0/search"
    
  3. 必要に応じて、search_termの値を置き換えて検索クエリをカスタマイズします。

    search_term = "Azure Cognitive Services"
    

要求を行う

このコードでは、requests ライブラリを使用して Bing Web Search API を呼び出し、結果を JSON オブジェクトとして返します。 API キーは headers ディクショナリで渡され、検索用語とクエリ パラメーターは params ディクショナリで渡されます。

オプションとパラメーターの完全な一覧については、「Bing Web Search API v7 を参照してください。

import requests

headers = {"Ocp-Apim-Subscription-Key": subscription_key}
params = {"q": search_term, "textDecorations": True, "textFormat": "HTML"}
response = requests.get(search_url, headers=headers, params=params)
response.raise_for_status()
search_results = response.json()

応答の書式設定と表示

search_results オブジェクトには、検索結果と、関連するクエリやページなどのメタデータが含まれます。 このコードでは、IPython.display ライブラリを使用して、ブラウザーに応答の書式設定と表示を行います。

from IPython.display import HTML

rows = "\n".join(["""<tr>
                       <td><a href=\"{0}\">{1}</a></td>
                       <td>{2}</td>
                     </tr>""".format(v["url"], v["name"], v["snippet"])
                  for v in search_results["webPages"]["value"]])
HTML("<table>{0}</table>".format(rows))

GitHub のサンプル コード

このコードをローカルで実行するには、GitHub で入手できる完全なサンプルを参照してください。

次のステップ

こちらもご覧ください