Краткое руководство. Отправка запросов для поиска в REST API Bing для поиска сущностей с помощью Python
Предупреждение
30 октября 2020 г. API Поиск Bing перенесены из служб ИИ Azure в Поиск Bing Services. Эта документация приводится только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.
Из этого краткого руководства вы узнаете, как вызвать API Bing для поиска сущностей и просмотреть ответ в формате JSON. Это простое приложение Python отправляет запрос на поиск новостей к API и отображает ответ. Исходный код этого примера доступен на GitHub.
Это приложение создано на языке Python. Но API представляет собой веб-службу на основе REST, совместимую с большинством языков программирования.
Предварительные требования
- Python 2.x или 3.x.
Создание ресурса Azure
Чтобы начать работу с API Поиска сущностей Bing, создайте один из следующих ресурсов Azure.
Ресурс Поиска сущностей Bing
- доступен на портале Azure до удаления.
- Используйте бесплатную ценовую категорию, чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
- Поиск сущностей Bing также предлагается на платных уровнях ресурса поиска Bing версии 7.
Ресурс для нескольких служб
- доступен на портале Azure до удаления.
- Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.
Создание и инициализация приложения
Создайте файл Python в избранной интегрированной среде разработки или редакторе и добавьте следующие операции импорта. Создайте переменные для вашего ключа подписки, конечной точки, рынка и поискового запроса. Вы можете использовать глобальную конечную точку, указанную в коде ниже, или конечную точку личного поддомена, которая отображается на портале Azure для вашего ресурса.
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'
Создайте URL-адрес запроса, добавив свою рыночную переменную к параметру
?mkt=
. Выполните кодирование URL-адреса вашего поискового запроса и добавьте его к параметру&q=
.params = '?mkt=' + mkt + '&q=' + urllib.parse.quote (query)
Отправка запроса и получение ответа
Создайте функцию
get_suggestions()
.В этой функции добавьте ключ подписки в словарь, используя
Ocp-Apim-Subscription-Key
в качестве ключа.Используйте
http.client.HTTPSConnection()
, чтобы создать клиентский объект HTTPS. Отправьте запросGET
с помощьюrequest()
, указав сведения о пути, параметрах и заголовке.Сохраните ответ с помощью
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"
},
. . .
]
}
}