Avvio rapido: Usare una libreria client di Ricerca Web Bing
Avviso
Il 30 ottobre 2020 le API Ricerca Bing sono state spostate dai servizi di intelligenza artificiale di Azure ai servizi di Ricerca Bing. Questa documentazione viene fornita solo per riferimento. Per la documentazione aggiornata, vedere la documentazione dell'API ricerca Bing. Per istruzioni sulla creazione di nuove risorse di Azure per la ricerca Bing, vedere Creare una risorsa Ricerca Bing tramite il Azure Marketplace.
La libreria client ricerca Web Bing semplifica l'integrazione di Ricerca Web Bing nell'applicazione C#. In questa guida introduttiva si apprenderà come creare un'istanza di un client, inviare una richiesta e stampare la risposta.
Per vedere il codice subito, Gli esempi per le librerie client Ricerca Bing per .NET sono disponibili in GitHub.
Prerequisiti
Prima di eseguire i passaggi illustrati in questa guida introduttiva, verificare di avere quanto segue:
Creare una risorsa di Azure
Per iniziare a usare l'API Ricerca Web Bing, creare una delle seguenti risorse di Azure:
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare il piano tariffario gratuito per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare la stessa chiave e lo stesso endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.
Creare un progetto e installare le dipendenze
Suggerimento
Ottenere il codice più recente come soluzione di Visual Studio da GitHub.
Il primo passaggio consiste nel creare un nuovo progetto console. Per assistenza sulla configurazione di un progetto console, vedere Hello World - Il primo programma (Guida per programmatori C#). Per usare l'SDK di Ricerca Web Bing nell'applicazione, è necessario installare Microsoft.Azure.CognitiveServices.Search.WebSearch
tramite Gestione pacchetti NuGet.
Con il pacchetto SDK di Ricerca Web vengono installati anche i componenti seguenti:
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
Dichiarare le dipendenze
Aprire il progetto in Visual Studio o Visual Studio Code e importare le dipendenze seguenti:
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;
Creare lo scaffolding di progetto
Quando si è creato il nuovo progetto console, devono essere stati creati anche uno spazio dei nomi e una classe per l'applicazione. Il programma dovrebbe risultare simile all'esempio seguente:
namespace WebSearchSDK
{
class YOUR_PROGRAM
{
// The code in the following sections goes here.
}
}
Nelle sezioni seguenti si compilerà l'applicazione di esempio all'interno di questa classe.
Creare una richiesta
Il codice seguente crea la query di ricerca.
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);
}
}
Gestire la risposta
A questo punto è possibile aggiungere codice per analizzare la risposta e stampare i risultati.
Name
e Url
della prima pagina Web, della prima immagine, del primo articolo e del primo video vengono stampati se sono presenti nell'oggetto risposta.
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...");
}
Dichiarare il metodo main
In questa applicazione il metodo main include codice che crea un'istanza del client, convalida subscriptionKey
e chiama WebResults
. Immettere una chiave di sottoscrizione valida per l'account di Azure prima di continuare.
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();
}
Eseguire l'applicazione
Ora eseguire l'applicazione.
dotnet run
Definire le funzioni e filtrare i risultati
Dopo aver eseguito la prima chiamata all'API Ricerca Web Bing, esaminare ora alcune funzioni dell'SDK che consentono di affinare le query e filtrare i risultati. Ogni funzione può essere aggiunta all'applicazione C# creata nella sezione precedente.
Limitare il numero di risultati restituiti da Bing
In questo esempio vengono usati i parametri count
e offset
per limitare il numero di risultati restituiti per "Best restaurants in Seattle". Vengono stampati Name
e Url
per il primo risultato.
Aggiungere il codice seguente al progetto console:
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); } }
Aggiungere
WebResultsWithCountAndOffset
amain
: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(); }
Eseguire l'applicazione.
Filtrare in base alle notizie
In questo esempio viene usato il parametro response_filter
per filtrare i risultati della ricerca. I risultati della ricerca restituiti si limitano agli articoli relativi a "Microsoft". Vengono stampati Name
e Url
per il primo risultato.
Aggiungere il codice seguente al progetto console:
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); } }
Aggiungere
WebResultsWithCountAndOffset
amain
: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(); }
Eseguire l'applicazione.
Usare i filtri safe search, answer count e promote
In questo esempio vengono usati i parametri answer_count
, promote
e safe_search
per filtrare i risultati della ricerca di "Music Videos". Vengono visualizzati Name
e ContentUrl
per il primo risultato.
Aggiungere il codice seguente al progetto console:
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); } }
Aggiungere
WebResultsWithCountAndOffset
amain
: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(); }
Eseguire l'applicazione.
Pulire le risorse
Dopo aver terminato di usare questo progetto, rimuovere la chiave di sottoscrizione dal codice dell'applicazione.
Passaggi successivi
La libreria client di Ricerca Web Bing semplifica l'integrazione di Ricerca Web Bing nell'applicazione Java. In questa guida introduttiva si apprenderà come inviare una richiesta, ricevere una risposta JSON e filtrare e analizzare i risultati.
Per vedere il codice subito, Gli esempi per le librerie client Ricerca Bing per Java sono disponibili in GitHub.
Prerequisiti
Prima di eseguire i passaggi illustrati in questa guida introduttiva, verificare di avere quanto segue:
- JDK 7 o 8
- Apache Maven o lo strumento di automazione della compilazione preferito
- Una chiave di sottoscrizione
Creare una risorsa di Azure
Per iniziare a usare l'API Ricerca Web Bing, creare una delle seguenti risorse di Azure:
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare il piano tariffario gratuito per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare la stessa chiave e lo stesso endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.
Creare un progetto e configurare il file POM
Creare un nuovo progetto Java usando Maven o lo strumento di automazione della compilazione preferito. Supponendo che venga usato Maven, aggiungere le righe seguenti al file modello a oggetti di progetto (POM o Project Object Model). Sostituire tutte le istanze di mainClass
con l'applicazione.
<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>
Dichiarare le dipendenze
Aprire il progetto nell'editor o nell'IDE preferito e importare le dipendenze seguenti:
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;
Se il progetto è stato creato con Maven, il pacchetto dovrebbe essere già dichiarato. In caso contrario, dichiararlo ora. Ad esempio:
package com.bingwebsearch.app
Dichiarare la classe BingWebSearchSample
Dichiarare la classe BingWebSearchSample
. Verrà inclusa la maggior parte del codice compreso il metodo main
.
public class BingWebSearchSample {
// The code in the following sections goes here.
}
Creare una richiesta
Il metodo runSample
, che si trova nella classe BingWebSearchSample
, crea la richiesta. Copiare il codice seguente nell'applicazione:
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...
Gestire la risposta
A questo punto è possibile aggiungere codice per analizzare la risposta e stampare i risultati.
name
e url
della prima pagina Web, della prima immagine, del primo articolo e del primo video vengono stampati se sono inclusi nell'oggetto risposta.
/*
* 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...");
}
Dichiarare il metodo main
In questa applicazione il metodo main include codice che crea un'istanza del client, convalida subscriptionKey
e chiama runSample
. Immettere una chiave di sottoscrizione valida per l'account di Azure prima di continuare.
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();
}
}
Eseguire il programma
Il passaggio finale consiste nell'eseguire il programma creato.
mvn compile exec:java
Pulire le risorse
Dopo aver terminato di usare questo progetto, rimuovere la chiave di sottoscrizione dal codice del programma.
Passaggi successivi
Vedi anche
La libreria client di Ricerca Web Bing facilita l'integrazione di Ricerca Web Bing nell'applicazione Node.js. In questa guida introduttiva si apprenderà come creare un'istanza di un client, inviare una richiesta e stampare la risposta.
Per vedere il codice subito, Esempi per le librerie client di Ricerca Bing per JavaScript sono disponibili su GitHub.
Prerequisites
Prima di eseguire i passaggi illustrati in questa guida introduttiva, verificare di avere quanto segue:
- Node.js 6 o versione successiva
- Una chiave di sottoscrizione
Creare una risorsa di Azure
Per iniziare a usare l'API Ricerca Web Bing, creare una delle seguenti risorse di Azure:
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare il piano tariffario gratuito per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare la stessa chiave e lo stesso endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.
Configurazione dell'ambiente di sviluppo
Si inizia configurando l'ambiente di sviluppo per il progetto Node. js.
Creare una nuova directory per il progetto:
mkdir YOUR_PROJECT
Creare un nuovo file di pacchetto:
cd YOUR_PROJECT npm init
A questo punto è possibile installare alcuni moduli di Azure e aggiungerli a
package.json
:npm install --save @azure/cognitiveservices-websearch npm install --save @azure/ms-rest-azure-js
Creare un progetto e dichiarare i moduli necessari
Nella stessa directory di package.json
creare un nuovo progetto Node.js usando l'editor o l'IDE preferito. Ad esempio: sample.js
.
Copiare quindi il codice seguente nel progetto. Vengono caricati i moduli installati nella sezione precedente.
const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
const WebSearchAPIClient = require('@azure/cognitiveservices-websearch');
Creare un'istanza del client
Il codice crea un'istanza di un client usando il modulo @azure/cognitiveservices-websearch
. Immettere una chiave di sottoscrizione valida per l'account di Azure prima di continuare.
let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
let webSearchApiClient = new WebSearchAPIClient(credentials);
Eseguire una richiesta e stampare i risultati
Usare il client per inviare una query di ricerca a Ricerca Web Bing. Se la risposta include risultati per uno qualsiasi degli elementi della matrice properties
, nella console viene stampato il valore di result.value
.
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;
})
Eseguire il programma
Il passaggio finale consiste nell'eseguire il programma creato.
Pulire le risorse
Dopo aver terminato di usare questo progetto, rimuovere la chiave di sottoscrizione dal codice del programma.
Passaggi successivi
Vedere anche
- Azure Node SDK reference (Informazioni di riferimento su Azure Node SDK)
La libreria client di Ricerca Web Bing facilita l'integrazione di Ricerca Web Bing nell'applicazione Python. In questa guida introduttiva si apprenderà come inviare una richiesta, ricevere una risposta JSON e filtrare e analizzare i risultati.
Per vedere il codice subito, in GitHub sono disponibili esempi per le librerie client di Ricerca Bing per Python.
Prerequisiti
Bing Web Search SDK è compatibile con Python 2.7 o 3.6+. Per questa guida introduttiva è consigliabile usare un ambiente virtuale.
- Python 2.7 o 3.6+
- virtualenv per Python 2.7
- venv per Python 3.x
Creare una risorsa di Azure
Per iniziare a usare l'API Ricerca Web Bing, creare una delle seguenti risorse di Azure:
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare il piano tariffario gratuito per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
- disponibile tramite il portale di Azure fino a quando la risorsa non viene eliminata.
- Usare la stessa chiave e lo stesso endpoint per le applicazioni in più servizi di intelligenza artificiale di Azure.
Creare e configurare l'ambiente virtuale
Le istruzioni per configurare un ambiente virtuale sono diverse per Python 2.x e Python 3.x. Per creare e inizializzare l'ambiente virtuale, seguire questa procedura.
Python 2.x
Creare un ambiente virtuale con virtualenv
per Python 2.7:
virtualenv mytestenv
Attivare l'ambiente:
cd mytestenv
source bin/activate
Installare le dipendenze di Bing Web Search SDK:
python -m pip install azure-cognitiveservices-search-websearch
Python 3.x
Creare un ambiente virtuale con venv
per Python 3.x:
python -m venv mytestenv
Attivare l'ambiente:
mytestenv\Scripts\activate.bat
Installare le dipendenze di Bing Web Search SDK:
cd mytestenv
python -m pip install azure-cognitiveservices-search-websearch
Creare un client e stampare i primi risultati
Dopo aver configurato l'ambiente virtuale e installato le dipendenze, è ora possibile creare un client. Il client gestirà le richieste inviate all'API Ricerca Web Bing e le risposte provenienti da tale API.
Se la risposta contiene pagine Web, immagini, notizie o video, viene stampato il primo risultato di ogni elemento.
Creare un nuovo progetto Python tramite l'editor o l'IDE preferito.
Copiare questo esempio di codice nel progetto.
endpoint
può essere l'endpoint globale seguente o l'endpoint sottodominio personalizzato visualizzato nel portale di Azure per la risorsa:# 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...")
Sostituire
SUBSCRIPTION_KEY
con una chiave di sottoscrizione valida.Sostituire
YOUR_ENDPOINT
con l'URL dell'endpoint nel portale e rimuovere la sezione "bing/v7.0" dall'endpoint.Eseguire il programma. Ad esempio:
python your_program.py
.
Definire le funzioni e filtrare i risultati
Ora che è stata creata la prima chiamata all'API Ricerca Web Bing, esaminiamo alcune funzioni. Le sezioni seguenti illustrano la funzionalità SDK per perfezionare le query e filtrare i risultati. Ogni funzione può essere aggiunta al programma Python creato nella sezione precedente.
Limitare il numero di risultati restituiti da Bing
In questo esempio vengono usati i parametri count
e offset
per limitare il numero di risultati restituiti tramite il metodo search
dell'SDK. Vengono stampati name
e url
per il primo risultato.
Aggiungere il codice seguente al progetto Python:
# 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))
Eseguire il programma.
Filtrare in base alle notizie e all'aggiornamento
In questo esempio vengono usati i parametri response_filter
e freshness
per filtrare i risultati della ricerca tramite il metodo search
dell'SDK. I risultati della ricerca restituiti si limitano agli articoli e alle pagine rilevati da Bing nelle ultime 24 ore. Vengono stampati name
e url
per il primo risultato.
Aggiungere il codice seguente al progetto Python:
# 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)
Eseguire il programma.
Usare i filtri safe search, answer count e promote
In questo esempio vengono usati i parametri answer_count
, promote
e safe_search
per filtrare i risultati della ricerca tramite il metodo search
dell'SDK. Vengono visualizzati name
e url
per il primo risultato.
Aggiungere il codice seguente al progetto Python:
# 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))
Eseguire il programma.
Pulire le risorse
Dopo aver terminato di usare questo progetto, rimuovere la chiave di sottoscrizione dal codice del programma e disattivare l'ambiente virtuale.