Schnellstart: Verwenden einer Clientbibliothek für die Bing-Websuche

Warnung

Am 30. Oktober 2020 wurden die Bing-Suche-APIs aus den Azure KI Services in die Bing-Suchdienste verschoben. Diese Dokumentation wird nur zu Referenzzwecken bereitgestellt. Eine aktualisierte Dokumentation finden Sie in der Dokumentation zu den Bing-Suche-APIs. Anweisungen zum Erstellen neuer Azure-Ressourcen für die Bing-Suche finden Sie unter Erstellen einer Ressource für die Bing-Suche über Azure Marketplace.

Die Clientbibliothek für die Bing-Websuche erleichtert die Integration der Bing-Websuche in Ihre C#-Anwendung. In dieser Schnellstartanleitung erfahren Sie, wie Sie einen Client instanziieren, eine Anforderung senden und die Antwort ausgeben.

Möchten Sie den Code sofort sehen? Beispiele für die Clientbibliotheken für die Bing-Suche für .NET sind auf GitHub verfügbar.

Voraussetzungen

Im Folgenden sind die Tools aufgeführt, die Sie zum Ausführen dieser Schnellstartanleitung benötigen:

Erstellen einer Azure-Ressource

Beginnen Sie mit der Verwendung der Bing-Websuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:

Ressource für Bing-Suche v7

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie den Tarif „Free“, um den Dienst zu testen, und führen Sie später für die Produktion ein Upgrade auf einen kostenpflichtigen Tarif durch.

Ressource für mehrere Dienste

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie in allen Azure KI Services-Instanzen denselben Schlüssel und Endpunkt für Ihre Anwendungen.

Erstellen eines Projekts und Installieren der Abhängigkeiten

Tipp

Laden Sie den aktuellen Code als Visual Studio-Projektmappe von GitHub herunter.

Der erste Schritt ist die Erstellung eines neuen Konsolenprojekts. Falls Sie Hilfe beim Einrichten eines Konsolenprojekts benötigen, lesen Sie Hallo Welt – Ihr erstes Programm (C#-Programmierhandbuch). Um das Bing-Websuche-SDK in Ihrer Anwendung verwenden zu können, müssen Sie Microsoft.Azure.CognitiveServices.Search.WebSearch mithilfe des NuGet-Paket-Managers installieren.

Beim Installieren des Pakets mit dem SDK für die Websuche werden auch die folgenden Komponenten installiert:

  • Microsoft.Rest.ClientRuntime
  • Microsoft.Rest.ClientRuntime.Azure
  • Newtonsoft.Json

Deklarieren von Abhängigkeiten

Öffnen Sie Ihr Projekt in Visual Studio oder Visual Studio Code, und importieren Sie die folgenden Abhängigkeiten:

using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Search.WebSearch;
using Microsoft.Azure.CognitiveServices.Search.WebSearch.Models;
using System.Linq;
using System.Threading.Tasks;

Erstellen des Projektgerüstbaus

Wenn Sie Ihr neues Konsolenprojekt erstellt haben, sollten ein Namespace und eine Klasse für Ihre Anwendung erstellt worden sein. Ihr Programm sollte wie das folgende Beispiel aussehen:

namespace WebSearchSDK
{
    class YOUR_PROGRAM
    {

        // The code in the following sections goes here.

    }
}

In den folgenden Abschnitten erstellen wir unsere Beispielanwendung innerhalb dieser Klasse.

Erstellen einer Anforderung

Durch diesen Code wird die Suchabfrage erstellt.

public static async Task WebResults(WebSearchClient client)
{
    try
    {
        var webData = await client.Web.SearchAsync(query: "Yosemite National Park");
        Console.WriteLine("Searching for \"Yosemite National Park\"");

        // Code for handling responses is provided in the next section...

    }
    catch (Exception ex)
    {
        Console.WriteLine("Encountered exception. " + ex.Message);
    }
}

Verarbeiten der Antwort

Als Nächstes fügen Sie Code zum Analysieren der Antwort und Ausgeben der Ergebnisse hinzu. Der Name und die Url für die erste Webseite, das erste Bild, den ersten Nachrichtenartikel und das erste Video werden ausgegeben, wenn sie im Antwortobjekt vorhanden sind.

if (webData?.WebPages?.Value?.Count > 0)
{
    // find the first web page
    var firstWebPagesResult = webData.WebPages.Value.FirstOrDefault();

    if (firstWebPagesResult != null)
    {
        Console.WriteLine("Webpage Results # {0}", webData.WebPages.Value.Count);
        Console.WriteLine("First web page name: {0} ", firstWebPagesResult.Name);
        Console.WriteLine("First web page URL: {0} ", firstWebPagesResult.Url);
    }
    else
    {
        Console.WriteLine("Didn't find any web pages...");
    }
}
else
{
    Console.WriteLine("Didn't find any web pages...");
}

/*
 * Images
 * If the search response contains images, the first result's name
 * and url are printed.
 */
if (webData?.Images?.Value?.Count > 0)
{
    // find the first image result
    var firstImageResult = webData.Images.Value.FirstOrDefault();

    if (firstImageResult != null)
    {
        Console.WriteLine("Image Results # {0}", webData.Images.Value.Count);
        Console.WriteLine("First Image result name: {0} ", firstImageResult.Name);
        Console.WriteLine("First Image result URL: {0} ", firstImageResult.ContentUrl);
    }
    else
    {
        Console.WriteLine("Didn't find any images...");
    }
}
else
{
    Console.WriteLine("Didn't find any images...");
}

/*
 * News
 * If the search response contains news articles, the first result's name
 * and url are printed.
 */
if (webData?.News?.Value?.Count > 0)
{
    // find the first news result
    var firstNewsResult = webData.News.Value.FirstOrDefault();

    if (firstNewsResult != null)
    {
        Console.WriteLine("\r\nNews Results # {0}", webData.News.Value.Count);
        Console.WriteLine("First news result name: {0} ", firstNewsResult.Name);
        Console.WriteLine("First news result URL: {0} ", firstNewsResult.Url);
    }
    else
    {
        Console.WriteLine("Didn't find any news articles...");
    }
}
else
{
    Console.WriteLine("Didn't find any news articles...");
}

/*
 * Videos
 * If the search response contains videos, the first result's name
 * and url are printed.
 */
if (webData?.Videos?.Value?.Count > 0)
{
    // find the first video result
    var firstVideoResult = webData.Videos.Value.FirstOrDefault();

    if (firstVideoResult != null)
    {
        Console.WriteLine("\r\nVideo Results # {0}", webData.Videos.Value.Count);
        Console.WriteLine("First Video result name: {0} ", firstVideoResult.Name);
        Console.WriteLine("First Video result URL: {0} ", firstVideoResult.ContentUrl);
    }
    else
    {
        Console.WriteLine("Didn't find any videos...");
    }
}
else
{
    Console.WriteLine("Didn't find any videos...");
}

Deklarieren der main-Methode

In dieser Anwendung enthält die main-Methode Code, der den Client instanziiert, subscriptionKey überprüft und WebResults aufruft. Geben Sie einen gültigen Abonnementschlüssel für Ihr Azure-Konto ein, bevor Sie fortfahren.

static async Task Main(string[] args)
{
    var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));

    await WebResults(client);

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Ausführen der Anwendung

Führen Sie nun die Anwendung aus.

dotnet run

Definieren von Funktionen und Filtern der Ergebnisse

Sie haben Ihren ersten Aufruf der Bing-Websuche-API ausgeführt. Sehen wir uns nun einige Funktionen an, die SDK-Funktionalität zum Optimieren von Abfragen und Filtern von Ergebnissen unterstreichen. Jede dieser Funktionen kann der im vorherigen Abschnitt erstellten C#-Anwendung hinzugefügt werden.

Einschränken der von Bing zurückgegebenen Anzahl von Ergebnissen

In diesem Beispiel wird mit den Parametern count und offset die Anzahl von Ergebnissen eingeschränkt, die für „Best restaurants in Seattle“ zurückgegeben werden. Der Name und die Url für das erste Ergebnis werden ausgegeben.

  1. Fügen Sie Ihrem Konsolenprojekt den folgenden Code hinzu:

    public static async Task WebResultsWithCountAndOffset(WebSearchClient client)
    {
        try
        {
            var webData = await client.Web.SearchAsync(query: "Best restaurants in Seattle", offset: 10, count: 20);
            Console.WriteLine("\r\nSearching for \" Best restaurants in Seattle \"");
    
            if (webData?.WebPages?.Value?.Count > 0)
            {
                var firstWebPagesResult = webData.WebPages.Value.FirstOrDefault();
    
                if (firstWebPagesResult != null)
                {
                    Console.WriteLine("Web Results #{0}", webData.WebPages.Value.Count);
                    Console.WriteLine("First web page name: {0} ", firstWebPagesResult.Name);
                    Console.WriteLine("First web page URL: {0} ", firstWebPagesResult.Url);
                }
                else
                {
                    Console.WriteLine("Couldn't find first web result!");
                }
            }
            else
            {
                Console.WriteLine("Didn't see any Web data..");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Encountered exception. " + ex.Message);
        }
    }
    
  2. Fügen Sie WebResultsWithCountAndOffset zu main hinzu:

    static async Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Führen Sie die Anwendung aus.

Filtern nach Nachrichtenartikeln

In diesem Beispiel wird der response_filter-Parameter zum Filtern der Suchergebnisse verwendet. Die zurückgegebenen Suchergebnisse sind auf Nachrichtenartikel für „Microsoft“ beschränkt. Der Name und die Url für das erste Ergebnis werden ausgegeben.

  1. Fügen Sie Ihrem Konsolenprojekt den folgenden Code hinzu:

    public static async Task WebSearchWithResponseFilter(WebSearchClient client)
    {
        try
        {
            IList<string> responseFilterstrings = new List<string>() { "news" };
            var webData = await client.Web.SearchAsync(query: "Microsoft", responseFilter: responseFilterstrings);
            Console.WriteLine("\r\nSearching for \" Microsoft \" with response filter \"news\"");
    
            if (webData?.News?.Value?.Count > 0)
            {
                var firstNewsResult = webData.News.Value.FirstOrDefault();
    
                if (firstNewsResult != null)
                {
                    Console.WriteLine("News Results #{0}", webData.News.Value.Count);
                    Console.WriteLine("First news result name: {0} ", firstNewsResult.Name);
                    Console.WriteLine("First news result URL: {0} ", firstNewsResult.Url);
                }
                else
                {
                    Console.WriteLine("Couldn't find first News results!");
                }
            }
            else
            {
                Console.WriteLine("Didn't see any News data..");
            }
    
        }
        catch (Exception ex)
        {
            Console.WriteLine("Encountered exception. " + ex.Message);
        }
    }
    
  2. Fügen Sie WebResultsWithCountAndOffset zu main hinzu:

    static Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
        // Search with news filter...
        await WebSearchWithResponseFilter(client);
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Führen Sie die Anwendung aus.

Verwenden der Filter für sichere Suche, Antwortanzahl und Höherstufen

In diesem Beispiel werden die Parameter answer_count, promote und safe_search zum Filtern der Suchergebnisse für „Music Videos“ verwendet. Der Name und die ContentUrl für das erste Ergebnis werden angezeigt.

  1. Fügen Sie Ihrem Konsolenprojekt den folgenden Code hinzu:

    public static async Task WebSearchWithAnswerCountPromoteAndSafeSearch(WebSearchClient client)
    {
        try
        {
            IList<string> promoteAnswertypeStrings = new List<string>() { "videos" };
            var webData = await client.Web.SearchAsync(query: "Music Videos", answerCount: 2, promote: promoteAnswertypeStrings, safeSearch: SafeSearch.Strict);
            Console.WriteLine("\r\nSearching for \"Music Videos\"");
    
            if (webData?.Videos?.Value?.Count > 0)
            {
                var firstVideosResult = webData.Videos.Value.FirstOrDefault();
    
                if (firstVideosResult != null)
                {
                    Console.WriteLine("Video Results # {0}", webData.Videos.Value.Count);
                    Console.WriteLine("First Video result name: {0} ", firstVideosResult.Name);
                    Console.WriteLine("First Video result URL: {0} ", firstVideosResult.ContentUrl);
                }
                else
                {
                    Console.WriteLine("Couldn't find videos results!");
                }
            }
            else
            {
                Console.WriteLine("Didn't see any data..");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Encountered exception. " + ex.Message);
        }
    }
    
  2. Fügen Sie WebResultsWithCountAndOffset zu main hinzu:

    static async Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
        // Search with news filter...
        await WebSearchWithResponseFilter(client);
        // Search with answer count, promote, and safe search
        await WebSearchWithAnswerCountPromoteAndSafeSearch(client);
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Führen Sie die Anwendung aus.

Bereinigen von Ressourcen

Denken Sie daran, nach dem Fertigstellen dieses Projekts Ihren Abonnementschlüssel aus dem Anwendungscode zu entfernen.

Nächste Schritte

Die Clientbibliothek für die Bing-Websuche erleichtert die Integration der Bing-Websuche in Ihre Java-Anwendung. In dieser Schnellstartanleitung erfahren Sie, wie Sie eine Anforderung senden, eine JSON-Antwort empfangen und die Ergebnisse filtern und analysieren.

Möchten Sie den Code sofort sehen? Beispiele für die Clientbibliotheken für die Bing-Suche für Java sind auf GitHub verfügbar.

Voraussetzungen

Im Folgenden sind die Tools aufgeführt, die Sie zum Ausführen dieser Schnellstartanleitung benötigen:

Erstellen einer Azure-Ressource

Beginnen Sie mit der Verwendung der Bing-Websuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:

Ressource für Bing-Suche v7

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie den Tarif „Free“, um den Dienst zu testen, und führen Sie später für die Produktion ein Upgrade auf einen kostenpflichtigen Tarif durch.

Ressource für mehrere Dienste

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie in allen Azure KI Services-Instanzen denselben Schlüssel und Endpunkt für Ihre Anwendungen.

Erstellen eines Projekts und Einrichten Ihrer POM-Datei

Erstellen Sie mit Maven oder einem anderen Buildautomatisierungstool ein neues Java-Projekt. Wenn Sie Maven verwenden, fügen Sie Ihrer POM-Datei (Projektobjektmodell) die folgenden Zeilen hinzu. Ersetzen Sie alle Instanzen von mainClass durch Ihre Anwendung.

<build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.4.0</version>
        <configuration>
          <!--Your comment
            Replace the mainClass with the path to your Java application.
            It should begin with com and doesn't require the .java extension.
            For example: com.bingwebsearch.app.BingWebSearchSample. This maps to
            The following directory structure:
            src/main/java/com/bingwebsearch/app/BingWebSearchSample.java.
          -->
          <mainClass>com.path.to.your.app.APP_NAME</mainClass>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>attached</goal>
            </goals>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <!--Your comment
                    Replace the mainClass with the path to your Java application.
                    For example: com.bingwebsearch.app.BingWebSearchSample.java.
                    This maps to the following directory structure:
                    src/main/java/com/bingwebsearch/app/BingWebSearchSample.java.
                  -->
                  <mainClass>com.path.to.your.app.APP_NAME.java</mainClass>
                </manifest>
              </archive>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure</artifactId>
      <version>1.9.0</version>
    </dependency>
    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>3.3</version>
    </dependency>
    <dependency>
      <groupId>com.microsoft.azure.cognitiveservices</groupId>
      <artifactId>azure-cognitiveservices-websearch</artifactId>
      <version>1.0.1</version>
    </dependency>
  </dependencies>

Deklarieren von Abhängigkeiten

Öffnen Sie Ihr Projekt in Ihrer bevorzugten IDE oder in Ihrem bevorzugten Editor, und importieren Sie die folgenden Abhängigkeiten:

import com.microsoft.azure.cognitiveservices.search.websearch.BingWebSearchAPI;
import com.microsoft.azure.cognitiveservices.search.websearch.BingWebSearchManager;
import com.microsoft.azure.cognitiveservices.search.websearch.models.ImageObject;
import com.microsoft.azure.cognitiveservices.search.websearch.models.NewsArticle;
import com.microsoft.azure.cognitiveservices.search.websearch.models.SearchResponse;
import com.microsoft.azure.cognitiveservices.search.websearch.models.VideoObject;
import com.microsoft.azure.cognitiveservices.search.websearch.models.WebPage;

Wenn Sie das Projekt mit Maven erstellt haben, sollte das Paket bereits deklariert sein. Falls nicht, deklarieren Sie das Paket. Beispiel:

package com.bingwebsearch.app

Deklarieren der BingWebSearchSample-Klasse

Deklarieren Sie die Klasse BingWebSearchSample. Sie enthält den Großteil unseres Codes, einschließlich der Methode main.

public class BingWebSearchSample {

// The code in the following sections goes here.

}

Erstellen einer Anforderung

Die Methode runSample in der Klasse BingWebSearchSample erstellt die Anforderung. Kopieren Sie den folgenden Code in Ihre Anwendung:

public static boolean runSample(BingWebSearchAPI client) {
    /*
     * This function performs the search.
     *
     * @param client instance of the Bing Web Search API client
     * @return true if sample runs successfully
     */
    try {
        /*
         * Performs a search based on the .withQuery and prints the name and
         * url for the first web pages, image, news, and video result
         * included in the response.
         */
        System.out.println("Searched Web for \"Xbox\"");
        // Construct the request.
        SearchResponse webData = client.bingWebs().search()
            .withQuery("Xbox")
            .withMarket("en-us")
            .withCount(10)
            .execute();

// Code continues in the next section...

Verarbeiten der Antwort

Als Nächstes fügen Sie Code zum Analysieren der Antwort und Ausgeben der Ergebnisse hinzu. Der name und die url für die erste Webseite, das erste Bild, den ersten Nachrichtenartikel und das erste Video werden ausgegeben, wenn sie im Antwortobjekt enthalten sind.

/*
* WebPages
* If the search response has web pages, the first result's name
* and url are printed.
*/
if (webData != null && webData.webPages() != null && webData.webPages().value() != null &&
        webData.webPages().value().size() > 0) {
    // find the first web page
    WebPage firstWebPagesResult = webData.webPages().value().get(0);

    if (firstWebPagesResult != null) {
        System.out.println(String.format("Webpage Results#%d", webData.webPages().value().size()));
        System.out.println(String.format("First web page name: %s ", firstWebPagesResult.name()));
        System.out.println(String.format("First web page URL: %s ", firstWebPagesResult.url()));
    } else {
        System.out.println("Couldn't find the first web result!");
    }
} else {
    System.out.println("Didn't find any web pages...");
}
/*
 * Images
 * If the search response has images, the first result's name
 * and url are printed.
 */
if (webData != null && webData.images() != null && webData.images().value() != null &&
        webData.images().value().size() > 0) {
    // find the first image result
    ImageObject firstImageResult = webData.images().value().get(0);

    if (firstImageResult != null) {
        System.out.println(String.format("Image Results#%d", webData.images().value().size()));
        System.out.println(String.format("First Image result name: %s ", firstImageResult.name()));
        System.out.println(String.format("First Image result URL: %s ", firstImageResult.contentUrl()));
    } else {
        System.out.println("Couldn't find the first image result!");
    }
} else {
    System.out.println("Didn't find any images...");
}
/*
 * News
 * If the search response has news articles, the first result's name
 * and url are printed.
 */
if (webData != null && webData.news() != null && webData.news().value() != null &&
        webData.news().value().size() > 0) {
    // find the first news result
    NewsArticle firstNewsResult = webData.news().value().get(0);
    if (firstNewsResult != null) {
        System.out.println(String.format("News Results#%d", webData.news().value().size()));
        System.out.println(String.format("First news result name: %s ", firstNewsResult.name()));
        System.out.println(String.format("First news result URL: %s ", firstNewsResult.url()));
    } else {
        System.out.println("Couldn't find the first news result!");
    }
} else {
    System.out.println("Didn't find any news articles...");
}

/*
 * Videos
 * If the search response has videos, the first result's name
 * and url are printed.
 */
if (webData != null && webData.videos() != null && webData.videos().value() != null &&
        webData.videos().value().size() > 0) {
    // find the first video result
    VideoObject firstVideoResult = webData.videos().value().get(0);

    if (firstVideoResult != null) {
        System.out.println(String.format("Video Results#%s", webData.videos().value().size()));
        System.out.println(String.format("First Video result name: %s ", firstVideoResult.name()));
        System.out.println(String.format("First Video result URL: %s ", firstVideoResult.contentUrl()));
    } else {
        System.out.println("Couldn't find the first video result!");
    }
} else {
    System.out.println("Didn't find any videos...");
}

Deklarieren der main-Methode

In dieser Anwendung enthält die main-Methode Code, der den Client instanziiert, subscriptionKey überprüft und runSample aufruft. Geben Sie einen gültigen Abonnementschlüssel für Ihr Azure-Konto ein, bevor Sie fortfahren.

public static void main(String[] args) {
    try {
        // Enter a valid subscription key for your account.
        final String subscriptionKey = "YOUR_SUBSCRIPTION_KEY";
        // Instantiate the client.
        BingWebSearchAPI client = BingWebSearchManager.authenticate(subscriptionKey);
        // Make a call to the Bing Web Search API.
        runSample(client);
    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}

Ausführen des Programms

Im letzten Schritt wird das Programm ausgeführt.

mvn compile exec:java

Bereinigen von Ressourcen

Denken Sie daran, nach Abschluss dieses Projekts Ihren Abonnementschlüssel aus dem Anwendungscode zu entfernen.

Nächste Schritte

Siehe auch

Die Clientbibliothek für die Bing-Websuche erleichtert die Integration der Bing-Websuche in Ihre Node.js-Anwendung. In dieser Schnellstartanleitung erfahren Sie, wie Sie einen Client instanziieren, eine Anforderung senden und die Antwort ausgeben.

Möchten Sie den Code sofort sehen? Beispiele für die Clientbibliotheken der Bing-Suche für JavaScript sind auf GitHub verfügbar.

Voraussetzungen

Im Folgenden sind die Tools aufgeführt, die Sie zum Ausführen dieser Schnellstartanleitung benötigen:

Erstellen einer Azure-Ressource

Beginnen Sie mit der Verwendung der Bing-Websuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:

Ressource für Bing-Suche v7

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie den Tarif „Free“, um den Dienst zu testen, und führen Sie später für die Produktion ein Upgrade auf einen kostenpflichtigen Tarif durch.

Ressource für mehrere Dienste

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie in allen Azure KI Services-Instanzen denselben Schlüssel und Endpunkt für Ihre Anwendungen.

Einrichten der Entwicklungsumgebung

Als Erstes richten wir die Entwicklungsumgebung für das Node.js-Projekt ein.

  1. Erstellen Sie ein neues Verzeichnis für Ihr Projekt:

    mkdir YOUR_PROJECT
    
  2. Erstellen Sie eine neue Paketdatei:

    cd YOUR_PROJECT
    npm init
    
  3. Lassen Sie uns nun einige Azure-Module installieren und sie zu package.json hinzufügen:

    npm install --save @azure/cognitiveservices-websearch
    npm install --save @azure/ms-rest-azure-js
    

Erstellen eines Projekts und Deklarieren der erforderlichen Module

Erstellen Sie in dem Verzeichnis, in dem sich auch package.json befindet, ein neues Node.js-Projekt. Verwenden Sie dazu Ihre bevorzugte IDE oder Ihren bevorzugten Editor. Beispiel: sample.js.

Kopieren Sie diesen Code in Ihr Projekt. Er lädt die Module, die im vorherigen Abschnitt installiert wurden.

const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
const WebSearchAPIClient = require('@azure/cognitiveservices-websearch');

Instanziieren des Clients

Dieser Code instanziiert einen Client und verwendet das Modul @azure/cognitiveservices-websearch. Geben Sie einen gültigen Abonnementschlüssel für Ihr Azure-Konto ein, bevor Sie fortfahren.

let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
let webSearchApiClient = new WebSearchAPIClient(credentials);

Senden einer Anforderung und Ausgeben der Ergebnisse

Verwenden Sie den Client, um eine Suchabfrage an die Bing-Websuche zu senden. Wenn die Antwort Ergebnisse für eines der Elemente im Array properties enthält, wird result.value in der Konsole ausgegeben.

webSearchApiClient.web.search('seahawks').then((result) => {
    let properties = ["images", "webPages", "news", "videos"];
    for (let i = 0; i < properties.length; i++) {
        if (result[properties[i]]) {
            console.log(result[properties[i]].value);
        } else {
            console.log(`No ${properties[i]} data`);
        }
    }
}).catch((err) => {
    throw err;
})

Ausführen des Programms

Im letzten Schritt wird das Programm ausgeführt.

Bereinigen von Ressourcen

Denken Sie daran, nach Abschluss dieses Projekts Ihren Abonnementschlüssel aus dem Anwendungscode zu entfernen.

Nächste Schritte

Weitere Informationen

Die Clientbibliothek für die Bing-Websuche erleichtert die Integration der Bing-Websuche in Ihre Python-Anwendung. In dieser Schnellstartanleitung erfahren Sie, wie Sie eine Anforderung senden, eine JSON-Antwort empfangen und die Ergebnisse filtern und analysieren.

Möchten Sie den Code sofort sehen? Beispiele für die Clientbibliotheken für die Bing-Suche für Python sind auf GitHub verfügbar.

Voraussetzungen

Das Bing-Websuche-SDK ist mit Python 2.7 oder 3.6 und höher kompatibel. Es wird empfohlen, für diese Schnellstartanleitung eine virtuelle Umgebung zu verwenden.

  • Python 2.7 oder 3.6 und höher
  • virtualenv für Python 2.7
  • venv für Python 3.x

Erstellen einer Azure-Ressource

Beginnen Sie mit der Verwendung der Bing-Websuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:

Ressource für Bing-Suche v7

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie den Tarif „Free“, um den Dienst zu testen, und führen Sie später für die Produktion ein Upgrade auf einen kostenpflichtigen Tarif durch.

Ressource für mehrere Dienste

  • Verfügbar über das Azure-Portal, bis Sie die Ressource löschen.
  • Verwenden Sie in allen Azure KI Services-Instanzen denselben Schlüssel und Endpunkt für Ihre Anwendungen.

Erstellen und Konfigurieren der virtuellen Umgebung

Die Anweisungen zum Einrichten und Konfigurieren einer virtuellen Umgebung unterscheiden sich für Python 2.x und Python 3.x. Führen Sie die folgenden Schritte aus, um die virtuelle Umgebung zu erstellen und zu initialisieren.

Python 2.x

Erstellen Sie mit virtualenv eine virtuelle Umgebung für Python 2.7:

virtualenv mytestenv

Aktivieren Sie Ihre Umgebung:

cd mytestenv
source bin/activate

Installieren Sie Abhängigkeiten des Bing-Websuche-SDK:

python -m pip install azure-cognitiveservices-search-websearch

Python 3.x

Erstellen Sie mit venv eine virtuelle Umgebung für Python 3.x:

python -m venv mytestenv

Aktivieren Sie Ihre Umgebung:

mytestenv\Scripts\activate.bat

Installieren Sie Abhängigkeiten des Bing-Websuche-SDK:

cd mytestenv
python -m pip install azure-cognitiveservices-search-websearch

Erstellen eines Clients und Ausgeben der ersten Ergebnisse

Sie haben Ihre virtuelle Umgebung eingerichtet und Abhängigkeiten installiert. Erstellen Sie nun einen Client. Der Client verarbeitet Anforderungen an die und Antworten von der Bing-Websuche-API.

Wenn die Antwort Webseiten, Bilder, Nachrichten oder Videos enthält, wird jeweils das erste Ergebnis für diese Elemente ausgegeben.

  1. Erstellen Sie in Ihrer bevorzugten IDE oder Ihrem bevorzugten Editor ein neues Python-Projekt.

  2. Kopieren Sie den folgenden Beispielcode in Ihr Projekt: endpoint kann der unten angegebene globale Endpunkt oder der Endpunkt der benutzerdefinierten Unterdomäne sein, der im Azure-Portal für Ihre Ressource angezeigt wird.

    # Import required modules.
    from azure.cognitiveservices.search.websearch import WebSearchClient
    from azure.cognitiveservices.search.websearch.models import SafeSearch
    from msrest.authentication import CognitiveServicesCredentials
    
    # Replace with your subscription key.
    subscription_key = "YOUR_SUBSCRIPTION_KEY"
    
    # Instantiate the client and replace with your endpoint.
    client = WebSearchClient(endpoint="YOUR_ENDPOINT", credentials=CognitiveServicesCredentials(subscription_key))
    
    # Make a request. Replace Yosemite if you'd like.
    web_data = client.web.search(query="Yosemite")
    print("\r\nSearched for Query# \" Yosemite \"")
    
    '''
    Web pages
    If the search response contains web pages, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.web_pages, 'value'):
    
        print("\r\nWebpage Results#{}".format(len(web_data.web_pages.value)))
    
        first_web_page = web_data.web_pages.value[0]
        print("First web page name: {} ".format(first_web_page.name))
        print("First web page URL: {} ".format(first_web_page.url))
    
    else:
        print("Didn't find any web pages...")
    
    '''
    Images
    If the search response contains images, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.images, 'value'):
    
        print("\r\nImage Results#{}".format(len(web_data.images.value)))
    
        first_image = web_data.images.value[0]
        print("First Image name: {} ".format(first_image.name))
        print("First Image URL: {} ".format(first_image.url))
    
    else:
        print("Didn't find any images...")
    
    '''
    News
    If the search response contains news, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.news, 'value'):
    
        print("\r\nNews Results#{}".format(len(web_data.news.value)))
    
        first_news = web_data.news.value[0]
        print("First News name: {} ".format(first_news.name))
        print("First News URL: {} ".format(first_news.url))
    
    else:
        print("Didn't find any news...")
    
    '''
    If the search response contains videos, the first result's name and url
    are printed.
    '''
    if hasattr(web_data.videos, 'value'):
    
        print("\r\nVideos Results#{}".format(len(web_data.videos.value)))
    
        first_video = web_data.videos.value[0]
        print("First Videos name: {} ".format(first_video.name))
        print("First Videos URL: {} ".format(first_video.url))
    
    else:
        print("Didn't find any videos...")
    
  3. Ersetzen Sie SUBSCRIPTION_KEY durch einen gültigen Abonnementschlüssel.

  4. Ersetzen Sie YOUR_ENDPOINT im Portal durch ihre Endpunkt-URL, und entfernen Sie den Abschnitt für „bing/v7.0“ aus dem Endpunkt.

  5. Führen Sie das Programm aus. Beispiel: python your_program.py.

Definieren von Funktionen und Filtern der Ergebnisse

Nachdem Sie nun erstmal die Bing-Websuche-API aufgerufen haben, widmen wir uns als Nächstes einigen Funktionen. In den folgenden Abschnitten werden SDK-Funktionen für die Abfrageoptimierung und Ergebnisfilterung vorgestellt. Jede Funktion kann dem im vorherigen Abschnitt erstellten Python-Programm hinzugefügt werden.

Einschränken der von Bing zurückgegebenen Anzahl von Ergebnissen

In diesem Beispiel wird mit den Parametern count und offset die Anzahl von Ergebnissen eingeschränkt, die mithilfe der search-Methode des SDK zurückgegeben werden. Der name und die url für das erste Ergebnis werden ausgegeben.

  1. Fügen Sie folgenden Code zu Ihrem Python-Projekt hinzu:

     # Declare the function.
     def web_results_with_count_and_offset(subscription_key):
         client = WebSearchAPI(CognitiveServicesCredentials(subscription_key))
    
         try:
             '''
             Set the query, offset, and count using the SDK's search method. See:
             https://learn.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
             '''
             web_data = client.web.search(query="Best restaurants in Seattle", offset=10, count=20)
             print("\r\nSearching for \"Best restaurants in Seattle\"")
    
             if web_data.web_pages.value:
                 '''
                 If web pages are available, print the # of responses, and the first and second
                 web pages returned.
                 '''
                 print("Webpage Results#{}".format(len(web_data.web_pages.value)))
    
                 first_web_page = web_data.web_pages.value[0]
                 print("First web page name: {} ".format(first_web_page.name))
                 print("First web page URL: {} ".format(first_web_page.url))
    
             else:
                 print("Didn't find any web pages...")
    
         except Exception as err:
             print("Encountered exception. {}".format(err))
    
  2. Führen Sie das Programm aus.

Filtern nach Nachrichten und Aktualität

In diesem Beispiel werden die Parameter response_filter und freshness verwendet, um Suchergebnisse mithilfe der search-Methode des SDK zu filtern. Die zurückgegebenen Suchergebnisse sind auf Nachrichtenartikel und -seiten beschränkt, die von Bing in den letzten 24 Stunden gefunden wurden. Der name und die url für das erste Ergebnis werden ausgegeben.

  1. Fügen Sie folgenden Code zu Ihrem Python-Projekt hinzu:

    # Declare the function.
    def web_search_with_response_filter(subscription_key):
        client = WebSearchAPI(CognitiveServicesCredentials(subscription_key))
        try:
            '''
            Set the query, response_filter, and freshness using the SDK's search method. See:
            https://learn.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
            '''
            web_data = client.web.search(query="xbox",
                response_filter=["News"],
                freshness="Day")
            print("\r\nSearching for \"xbox\" with the response filter set to \"News\" and freshness filter set to \"Day\".")
    
            '''
            If news articles are available, print the # of responses, and the first and second
            articles returned.
            '''
            if web_data.news.value:
    
                print("# of news results: {}".format(len(web_data.news.value)))
    
                first_web_page = web_data.news.value[0]
                print("First article name: {} ".format(first_web_page.name))
                print("First article URL: {} ".format(first_web_page.url))
    
                print("")
    
                second_web_page = web_data.news.value[1]
                print("\nSecond article name: {} ".format(second_web_page.name))
                print("Second article URL: {} ".format(second_web_page.url))
    
            else:
                print("Didn't find any news articles...")
    
        except Exception as err:
            print("Encountered exception. {}".format(err))
    
    # Call the function.
    web_search_with_response_filter(subscription_key)
    
  2. Führen Sie das Programm aus.

Verwenden der Filter für sichere Suche, Antwortanzahl und Höherstufen

In diesem Beispiel werden die Parameter answer_count, promote und safe_search verwendet, um Suchergebnisse mithilfe der search-Methode des SDK zu filtern. Der name und die url für das erste Ergebnis werden angezeigt.

  1. Fügen Sie folgenden Code zu Ihrem Python-Projekt hinzu:

    # Declare the function.
    def web_search_with_answer_count_promote_and_safe_search(subscription_key):
    
        client = WebSearchAPI(CognitiveServicesCredentials(subscription_key))
    
        try:
            '''
            Set the query, answer_count, promote, and safe_search parameters using the SDK's search method. See:
            https://learn.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
            '''
            web_data = client.web.search(
                query="Niagara Falls",
                answer_count=2,
                promote=["videos"],
                safe_search=SafeSearch.strict  # or directly "Strict"
            )
            print("\r\nSearching for \"Niagara Falls\"")
    
            '''
            If results are available, print the # of responses, and the first result returned.
            '''
            if web_data.web_pages.value:
    
                print("Webpage Results#{}".format(len(web_data.web_pages.value)))
    
                first_web_page = web_data.web_pages.value[0]
                print("First web page name: {} ".format(first_web_page.name))
                print("First web page URL: {} ".format(first_web_page.url))
    
            else:
                print("Didn't see any Web data..")
    
        except Exception as err:
            print("Encountered exception. {}".format(err))
    
  2. Führen Sie das Programm aus.

Bereinigen von Ressourcen

Wenn Sie mit diesem Projekt fertig sind, entfernen Sie unbedingt den Abonnementschlüssel aus dem Programmcode, und deaktivieren Sie die virtuelle Umgebung.

Nächste Schritte

Weitere Informationen