クイック スタート:Python を使用して Bing Entity Search REST API に検索要求を送信する
警告
2020 年 10 月 30 日に、Bing Search API は Azure AI サービスから Bing Search サービスに移行されました。 このドキュメントは、参考用としてのみ提供されています。 更新されたドキュメントについては、Bing search API のドキュメントを参照してください。 Bing 検索用の新しい Azure リソースを作成する手順については、「Azure Marketplace から Bing Search リソースを作成する」を参照してください。
このクイック スタートを使用すると、Bing Entity Search API への最初の呼び出しを行い、JSON 応答を表示することができます。 この簡単な Python アプリケーションでは、ニュース検索クエリを API に送信して、その応答を表示します。 このサンプルのソース コードは、GitHub で入手できます。
このアプリケーションは Python で記述されていますが、API はほとんどのプログラミング言語と互換性のある RESTful Web サービスです。
前提条件
- Python 2.x または 3.x
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Entity Search API の使用を開始します。
Bing Entity Search のリソース
- ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
- Free 価格レベルを使ってサービスを試用し、後から運用環境用の有料レベルにアップグレードします。
- Bing Entity Search は、Bing Search v7 リソースの有料レベルでも提供されています。
マルチサービス リソース
- ご自身でリソースを削除するまでは Azure portal からご利用いただけます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
アプリケーションを作成して初期化する
好みの IDE またはエディターで新しい Python ファイルを作成し、次の import を追加します。 サブスクリプション キー、エンドポイント、市場、検索クエリのための変数を作成します。 次のコードのグローバル エンドポイントを使用するか、Azure portal に表示される、対象のリソースのカスタム サブドメイン エンドポイントを使用することができます。
import http.client, urllib.parse import json subscriptionKey = 'ENTER YOUR KEY HERE' host = 'api.bing.microsoft.com' path = '/v7.0/search' mkt = 'en-US' query = 'italian restaurants near me'
?mkt=
パラメーターに市場変数を追加することで、要求の URL を作成します。 クエリを URL でエンコードして、それを&q=
パラメーターに追加します。params = '?mkt=' + mkt + '&q=' + urllib.parse.quote (query)
要求を送信して応答を取得する
get_suggestions()
という関数を作成します。この関数では、
Ocp-Apim-Subscription-Key
をキーとしてディクショナリにサブスクリプション キーを追加します。http.client.HTTPSConnection()
を使用して HTTPS クライアント オブジェクトを作成します。 パスとパラメーターおよびヘッダー情報を使用して、request()
でGET
要求を送信します。getresponse()
で応答を格納し、response.read()
を返します。def get_suggestions (): headers = {'Ocp-Apim-Subscription-Key': subscriptionKey} conn = http.client.HTTPSConnection (host) conn.request ("GET", path + params, None, headers) response = conn.getresponse () return response.read()
get_suggestions()
を呼び出して、JSON 応答を出力します。result = get_suggestions () print (json.dumps(json.loads(result), indent=4))
JSON の応答例
成功した応答は、次の例に示すように JSON で返されます。
{
"_type": "SearchResponse",
"queryContext": {
"originalQuery": "italian restaurant near me",
"askUserForLocation": true
},
"places": {
"value": [
{
"_type": "LocalBusiness",
"webSearchUrl": "https://www.bing.com/search?q=sinful+bakery&filters=local...",
"name": "Liberty's Delightful Sinful Bakery & Cafe",
"url": "https://www.contoso.com/",
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness"
]
},
"address": {
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98112",
"addressCountry": "US",
"neighborhood": "Madison Park"
},
"telephone": "(800) 555-1212"
},
. . .
{
"_type": "Restaurant",
"webSearchUrl": "https://www.bing.com/search?q=Pickles+and+Preserves...",
"name": "Munson's Pickles and Preserves Farm",
"url": "https://www.princi.com/",
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness",
"Restaurant"
]
},
"address": {
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US",
"neighborhood": "Capitol Hill"
},
"telephone": "(800) 555-1212"
},
. . .
]
}
}