Поделиться через


Краткое руководство. Отправка запросов для поиска в 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, совместимую с большинством языков программирования.

Предварительные требования

Создание ресурса Azure

Чтобы начать работу с API Поиска сущностей Bing, создайте один из следующих ресурсов Azure.

Ресурс Поиска сущностей Bing

  • доступен на портале Azure до удаления.
  • Используйте бесплатную ценовую категорию, чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
  • Поиск сущностей Bing также предлагается на платных уровнях ресурса поиска Bing версии 7.

Ресурс для нескольких служб

  • доступен на портале Azure до удаления.
  • Используйте один ключ и конечную точку для приложений в нескольких службах ИИ Azure.

Создание и инициализация приложения

  1. Создайте файл 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'
    
  2. Создайте URL-адрес запроса, добавив свою рыночную переменную к параметру ?mkt=. Выполните кодирование URL-адреса вашего поискового запроса и добавьте его к параметру &q=.

    params = '?mkt=' + mkt + '&q=' + urllib.parse.quote (query)
    

Отправка запроса и получение ответа

  1. Создайте функцию get_suggestions().

  2. В этой функции добавьте ключ подписки в словарь, используя Ocp-Apim-Subscription-Key в качестве ключа.

  3. Используйте http.client.HTTPSConnection(), чтобы создать клиентский объект HTTPS. Отправьте запрос GET с помощью request(), указав сведения о пути, параметрах и заголовке.

  4. Сохраните ответ с помощью 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()
    
  5. Вызовите 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"
      },
      
      . . .
    ]
  }
}

Дальнейшие действия