Démarrage rapide : Envoyer une requête de recherche à l’API REST Recherche d’entités Bing en Python

Avertissement

Le 30 octobre 2020, les API de recherche Bing sont passées des services Azure AI aux services de recherche Bing. Cette documentation est fournie à des fins de référence uniquement. Pour accéder à la documentation mise à jour, consultez la documentation de l’API Recherche Bing. Pour obtenir des instructions sur la création de nouvelles ressources Azure pour Recherche Bing, consultez Créer une ressource Recherche Bing à l’aide de Place de marché Azure.

Utilisez ce guide de démarrage rapide pour effectuer votre premier appel à l’API Recherche d’entités Bing et voir la réponse JSON. Cette application simple en Python envoie une requête de recherche d’actualités à l’API, puis affiche la réponse. Le code source de cet exemple est disponible sur GitHub.

Bien que cette application soit écrite en Python, l’API est un service web RESTful compatible avec la plupart des langages de programmation.

Prérequis

Créer une ressource Azure

Commencez à utiliser l’API Recherche d’entités Bing en créant une des ressources Azure suivantes.

Ressource Recherche d’entités Bing

  • Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
  • Utilisez le niveau tarifaire Gratuit pour tester le service, puis effectuez par la suite une mise à niveau vers un niveau payant pour la production.
  • L’API Recherche d’entités Bing est aussi proposée à certains niveaux de la ressource Recherche Bing v7.

Ressource multiservice

  • Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
  • Utilisez la même clé et le même point de terminaison pour vos applications, sur plusieurs services Azure AI.

Créer et initialiser l’application

  1. Créez un fichier Python dans votre éditeur ou IDE favori, puis ajoutez les importations suivantes. Créez des variables pour votre clé d’abonnement, votre point de terminaison, votre marché et votre requête de recherche. Vous pouvez utiliser le point de terminaison global dans le code suivant, ou le point de terminaison de sous-domaine personnalisé affiché dans le portail Azure pour votre ressource.

    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. Créer une URL de requête en ajoutant la variable de votre marché au paramètre ?mkt=. Encodez en URL votre requête et ajoutez-la au paramètre &q=.

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

Envoyer une requête et obtenir une réponse

  1. Créez une fonction nommée get_suggestions().

  2. Dans cette fonction, ajoutez votre clé d’abonnement à un dictionnaire avec Ocp-Apim-Subscription-Key comme clé.

  3. Utilisez http.client.HTTPSConnection() pour créer un objet client HTTPS. Envoyez une requête GET en utilisant request() avec votre chemin et vos paramètres, ainsi que vos informations d’en-tête.

  4. Stockez la réponse avec getresponse() et retournez 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. Appelez get_suggestions() et affichez la réponse JSON.

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

Exemple de réponse JSON

Une réponse correcte est retournée au format JSON, comme dans l’exemple suivant :

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

Étapes suivantes