Inicio rápido: Envío de una solicitud de búsqueda a Bing Entity Search REST API con Python

Advertencia

Las Bing Search API se mueven de Cognitive Services a Bing Search Services. A partir del 30 de octubre de 2020, las nuevas instancias de Bing Search deben aprovisionarse siguiendo el proceso documentado aquí. El aprovisionamiento de Bing Search APIs con Cognitive Services será posible durante los próximos tres años o hasta que finalice el Contrato Enterprise, lo que suceda primero. Puede encontrar instrucciones sobre la migración en Bing Search Services.

Use este inicio rápido para realizar la primera llamada a Bing Entity Search API y ver la respuesta JSON. Esta sencilla aplicación de Python envía una consulta de búsqueda de noticias a la API y muestra la respuesta. El código fuente del ejemplo está disponible en GitHub.

Aunque esta aplicación está escrita en Python, la API es un servicio web RESTful compatible con la mayoría de los lenguajes de programación.

Prerrequisitos

Creación de un recurso de Azure

Comience a usar Bing Entity Search API mediante la creación de uno de los recursos de Azure que se indican a continuación.

Recurso de Bing Entity Search

  • Disponible en Azure Portal hasta que lo elimine.
  • Use el plan de tarifa gratuito para probar el servicio y actualícelo más adelante a un nivel de pago para producción.
  • Bing Entity Search también se ofrece en los niveles de pago del recurso Bing Search, versión 7.

Recurso de varios servicios

  • Disponible en Azure Portal hasta que lo elimine.
  • Use la misma clave y el mismo punto de conexión para las aplicaciones en varios servicios de Cognitive Services.

Creación e inicialización de la aplicación

  1. Cree un archivo de Python en el IDE o editor que prefiera y agregue las siguientes importaciones. Cree variables para la clave de suscripción, un punto de conexión, un mercado y una consulta de búsqueda. Puede usar el punto de conexión global en el código siguiente, o el punto de conexión del subdominio personalizado que se muestra en Azure Portal para el recurso.

    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. Cree una dirección URL de solicitud anexando la variable de mercado al parámetro ?mkt=. Codifique como URL la consulta y anéxela al parámetro &q=.

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

Envío de una solicitud y obtención de una respuesta

  1. Cree una función denominada get_suggestions().

  2. En esta función, agregue la clave de suscripción a un diccionario con Ocp-Apim-Subscription-Key como clave.

  3. Use http.client.HTTPSConnection() para crear un objeto de cliente HTTPS. Envíe una solicitud GET mediante request() con la información de ruta de acceso, parámetros y encabezado.

  4. Almacene la respuesta con getresponse() y devuelva 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. Llame a get_suggestions() e imprima la respuesta JSON.

    result = get_suggestions ()
    print (json.dumps(json.loads(result), indent=4))
    

Ejemplo de respuesta JSON

Se devuelve una respuesta correcta en JSON, como se muestra en el siguiente ejemplo:

{
  "_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"
      },
      
      . . .
    ]
  }
}

Pasos siguientes