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

警告

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

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

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

Binder

前提条件

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 で入手できるサンプルの完成版に関する記事を参照してください。

次のステップ

関連項目