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


Краткое руководство. Отправка запроса поиска в REST API поиска сущностей Bing с помощью Python

Предупреждение

30 октября 2020 г. API поиска Bing перемещены из служб ИИ Azure в службы поиска Bing. Эта документация предоставляется только для справки. С актуальной документацией можно ознакомиться в документации по API поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.

Используйте это краткое руководство, чтобы выполнить первый вызов API поиска сущностей Bing и просмотреть ответ JSON. Это простое приложение Python отправляет запрос поиска новостей в API и отображает ответ. Исходный код для этого примера доступен на GitHub.

Хотя это приложение написано на Python, API — это веб-служба RESTful, совместимая с большинством языков программирования.

Предпосылки

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

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

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

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте бесплатный тарифный план, чтобы попробовать услугу, и перейдите на платный тариф для использования в работе.
  • Поиск сущностей Bing также предлагается на платных уровнях ресурса Bing Search версии 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"
      },
      
      . . .
    ]
  }
}

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