Schnellstart: Verwenden des Bing-Websuche-SDK für C#Quickstart: Use the Bing Web Search SDK for C#

Das Bing-Websuche-SDK erleichtert die Integration der Bing-Websuche in Ihre C#-Anwendung.The Bing Web Search SDK makes it easy to integrate Bing Web Search into your C# application. In dieser Schnellstartanleitung erfahren Sie, wie Sie einen Client instanziieren, eine Anforderung senden und die Antwort ausgeben.In this quickstart, you'll learn how to instantiate a client, send a request, and print the response.

Für diesen Schnellstart wird ein Azure Cognitive Services-Konto mit Bing-Suche-APIs benötigt.This quickstart requires an Azure Cognitive Services account with Bing Search APIs. Wenn Sie über kein Konto verfügen, können Sie über die kostenlose Testversion einen Abonnementschlüssel abrufen.If you don't have an account, you can use the free trial to get a subscription key.

Siehe auch Cognitive Services-Preise – Bing-Suche-APISee also Cognitive Services Pricing - Bing Search API.

VoraussetzungenPrerequisites

Im Folgenden sind die Tools aufgeführt, die Sie zum Ausführen dieser Schnellstartanleitung benötigen:Here are a few things that you'll need before running this quickstart:

Erstellen eines Projekts und Installieren der AbhängigkeitenCreate a project and install dependencies

Tipp

Laden Sie den aktuellen Code als Visual Studio-Projektmappe von GitHub herunter.Get the latest code as a Visual Studio solution from GitHub.

Der erste Schritt ist die Erstellung eines neuen Konsolenprojekts.The first step is to create a new console project. Falls Sie Hilfe beim Einrichten eines Konsolenprojekts benötigen, lesen Sie Hallo Welt – Ihr erstes Programm (C#-Programmierhandbuch).If you need help with setting up a console project, see Hello World -- Your First Program (C# Programming Guide). 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.To use the Bing Web Search SDK in your application, you'll need to install Microsoft.Azure.CognitiveServices.Search.WebSearch using the NuGet Package Manager.

Beim Installieren des Pakets mit dem SDK für die Websuche werden auch die folgenden Komponenten installiert:The Web Search SDK package also installs:

  • Microsoft.Rest.ClientRuntimeMicrosoft.Rest.ClientRuntime
  • Microsoft.Rest.ClientRuntime.AzureMicrosoft.Rest.ClientRuntime.Azure
  • Newtonsoft.JsonNewtonsoft.Json

Deklarieren von AbhängigkeitenDeclare dependencies

Öffnen Sie Ihr Projekt in Visual Studio oder Visual Studio Code, und importieren Sie die folgenden Abhängigkeiten:Open your project in Visual Studio or Visual Studio Code and import these dependencies:

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

Erstellen des ProjektgerüstbausCreate project scaffolding

Wenn Sie Ihr neues Konsolenprojekt erstellt haben, sollten ein Namespace und eine Klasse für Ihre Anwendung erstellt worden sein.When you created your new console project, a namespace and class for your application should have been created. Ihr Programm sollte wie das folgende Beispiel aussehen:Your program should look like this example:

namespace WebSearchSDK
{
    class YOUR_PROGRAM
    {

        // The code in the following sections goes here.

    }
}

In den folgenden Abschnitten erstellen wir unsere Beispielanwendung innerhalb dieser Klasse.In the following sections, we'll build our sample application within this class.

Erstellen einer AnforderungConstruct a request

Durch diesen Code wird die Suchabfrage erstellt.This code constructs the search query.

public static async void 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 AntwortHandle the response

Als Nächstes fügen Sie Code zum Analysieren der Antwort und Ausgeben der Ergebnisse hinzu.Next, let's add some code to parse the response and print the results. 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.The Name and Url for the first web page, image, news article, and video are printed if present in the response object.

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-MethodeDeclare the main method

In dieser Anwendung enthält die main-Methode Code, der den Client instanziiert, subscriptionKey überprüft und WebResults aufruft.In this application, the main method includes code that instantiates the client, validates the subscriptionKey, and calls WebResults. Geben Sie einen gültigen Abonnementschlüssel für Ihr Azure-Konto ein, bevor Sie fortfahren.Make sure that you enter a valid subscription key for your Azure account before continuing.

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

    WebResults(client);

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

Ausführen der AnwendungRun the application

Führen Sie nun die Anwendung aus.Let's run the application!

dotnet run

Definieren von Funktionen und Filtern der ErgebnisseDefine functions and filter results

Nachdem Sie Ihren ersten Aufruf der Bing-Websuche-API durchgeführt haben, sehen wir uns nun einige der SDK-Funktionen zum Verfeinern von Abfragen und Filtern der Ergebnisse an.Now that you've made your first call to the Bing Web Search API, let's look at a few functions that highlight SDK functionality for refining queries and filtering results. Jede dieser Funktionen kann der im vorherigen Abschnitt erstellten C#-Anwendung hinzugefügt werden.Each function can be added to your C# application created in the previous section.

Einschränken der von Bing zurückgegebenen Anzahl von ErgebnissenLimit the number of results returned by Bing

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.This sample uses the count and offset parameters to limit the number of results returned for "Best restaurants in Seattle". Der Name und die Url für das erste Ergebnis werden ausgegeben.The Name and Url for the first result are printed.

  1. Fügen Sie Ihrem Konsolenprojekt den folgenden Code hinzu:Add this code to your console project:

    public static async void 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:Add WebResultsWithCountAndOffset to main:

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

Filtern nach NachrichtenartikelnFilter for news

In diesem Beispiel wird der response_filter-Parameter zum Filtern der Suchergebnisse verwendet.This sample uses the response_filter parameter to filter search results. Die zurückgegebenen Suchergebnisse sind auf Nachrichtenartikel für „Microsoft“ beschränkt.The search results returned are limited to news articles for "Microsoft". Der Name und die Url für das erste Ergebnis werden ausgegeben.The Name and Url for the first result are printed.

  1. Fügen Sie Ihrem Konsolenprojekt den folgenden Code hinzu:Add this code to your console project:

    public static async void 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:Add WebResultsWithCountAndOffset to main:

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

Verwenden der Filter für sichere Suche, Antwortanzahl und HöherstufenUse safe search, answer count, and the promote filter

In diesem Beispiel werden die Parameter answer_count, promote und safe_search zum Filtern der Suchergebnisse für „Music Videos“ verwendet.This sample uses the answer_count, promote, and safe_search parameters to filter search results for "Music Videos". Der Name und die ContentUrl für das erste Ergebnis werden angezeigt.The Name and ContentUrl for the first result are displayed.

  1. Fügen Sie Ihrem Konsolenprojekt den folgenden Code hinzu:Add this code to your console project:

    public static async void 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:Add WebResultsWithCountAndOffset to main:

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

Bereinigen von RessourcenClean up resources

Denken Sie daran, nach dem Fertigstellen dieses Projekts Ihren Abonnementschlüssel aus dem Anwendungscode zu entfernen.When you're done with this project, make sure to remove your subscription key from the application's code.

Nächste SchritteNext steps