警告
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 の使用を開始します。
- リソースを削除するまで、Azure portal から使用できます。
- Free 価格レベルを使用してサービスを試し、後で運用環境用の有料レベルにアップグレードします。
- リソースを削除するまで、Azure portal から使用できます。
- 複数の Azure AI サービスで、アプリケーションに同じキーとエンドポイントを使用します。
変数の定義
subscription_keyの値を、Azure アカウントの有効なサブスクリプション キーに置き換えます。subscription_key = "YOUR_ACCESS_KEY" assert subscription_keyBing Web Search API エンドポイントを宣言します。 次のコードでグローバル エンドポイントを使用することも、リソースの Azure portal に表示される カスタム サブドメイン エンドポイントを使用することもできます。
search_url = "https://api.bing.microsoft.com/v7.0/search"必要に応じて、
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 で入手できる完全なサンプルを参照してください。