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:
- 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.
- 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.
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); } }
Fügen Sie
WebResultsWithCountAndOffset
zumain
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(); }
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.
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); } }
Fügen Sie
WebResultsWithCountAndOffset
zumain
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(); }
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.
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); } }
Fügen Sie
WebResultsWithCountAndOffset
zumain
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(); }
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:
- JDK 7 oder 8
- Apache Maven oder ein anderes Buildautomatisierungstool
- Abonnementschlüssel
Erstellen einer Azure-Ressource
Beginnen Sie mit der Verwendung der Bing-Websuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:
- 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.
- 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:
- Node.js 6 oder höher
- Abonnementschlüssel
Erstellen einer Azure-Ressource
Beginnen Sie mit der Verwendung der Bing-Websuche-API, indem Sie eine der folgenden Azure-Ressourcen erstellen:
- 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.
- 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.
Erstellen Sie ein neues Verzeichnis für Ihr Projekt:
mkdir YOUR_PROJECT
Erstellen Sie eine neue Paketdatei:
cd YOUR_PROJECT npm init
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:
- 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.
- 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.
Erstellen Sie in Ihrer bevorzugten IDE oder Ihrem bevorzugten Editor ein neues Python-Projekt.
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...")
Ersetzen Sie
SUBSCRIPTION_KEY
durch einen gültigen Abonnementschlüssel.Ersetzen Sie
YOUR_ENDPOINT
im Portal durch ihre Endpunkt-URL, und entfernen Sie den Abschnitt für „bing/v7.0“ aus dem Endpunkt.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.
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))
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.
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)
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.
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))
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.