Inicio rápido: Uso de una biblioteca de cliente de Bing Web Search
Advertencia
El 30 de octubre de 2020, las API de Bing Search se trasladaron de los servicios de Azure AI a los servicios de Bing Search. Esta documentación se proporciona solo como referencia. Para obtener documentación actualizada, consulte la documentación de Bing Search API. Para obtener instrucciones sobre cómo crear nuevos recursos de Azure para Bing Search, consulte el artículo sobre la creación de un recurso de Bing Search a través de Azure Marketplace.
La biblioteca cliente de Bing Web Search facilita la integración de Bing Web Search en la aplicación de C#. En esta guía de inicio rápido, aprenderá a crear una instancia de un cliente, enviar una solicitud e imprimir la respuesta.
¿Desea ver el código ahora mismo? En GitHub se encuentran disponibles ejemplos de bibliotecas cliente de Bing Search para .NET.
Prerequisites
Estas son algunas cosas que necesitará antes de ejecutar esta guía de inicio rápido:
Creación de un recurso de Azure
Comience a usar la API Bing Web Search mediante la creación de uno de los recursos de Azure que se indican a continuación:
- Disponible en Azure Portal hasta que lo elimine.
- Use el plan de tarifa gratuito para probar el servicio y actualícelo más adelante a un nivel de pago para producción.
- Disponible en Azure Portal hasta que lo elimine.
- Utilice la misma clave y el mismo punto de conexión para sus aplicaciones en varios servicios de Azure AI.
Creación de un proyecto e instalación de dependencias
Sugerencia
Obtenga el código más reciente como solución de Visual Studio desde GitHub.
El primer paso es crear un proyecto de consola. Si necesita ayuda para configurar un proyecto de consola, consulte Hola mundo, su primer programa (Guía de programación de C#). Para usar el SDK de Bing Web Search en la aplicación, necesita instalar Microsoft.Azure.CognitiveServices.Search.WebSearch
con el Administrador de paquetes NuGet.
El paquete del SDK de Web Search también instala:
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
Declaración de dependencias
Abra el proyecto en Visual Studio o Visual Studio Code e importe estas dependencias:
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;
Creación del scaffolding del proyecto
Al crear el proyecto de consola, se han tenido que crear un espacio de nombres y una clase para la aplicación. El aspecto del programa debería ser similar a este ejemplo:
namespace WebSearchSDK
{
class YOUR_PROGRAM
{
// The code in the following sections goes here.
}
}
En las siguientes secciones, vamos a crear una aplicación de ejemplo dentro de esta clase.
Creación de una solicitud
Este código crea la consulta de búsqueda.
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);
}
}
Control de la respuesta
A continuación, vamos a agregar un código para analizar la respuesta e imprimir los resultados. Se imprimen Name
y Url
para la primera página web, imagen, artículo de noticias y vídeo si están presentes en el objeto de respuesta.
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...");
}
Declaración del método main
En esta aplicación, el método main incluye código que crea instancias del cliente, valida subscriptionKey
y llama a WebResults
. Asegúrese de escribir una clave de suscripción válida para la cuenta de Azure antes de continuar.
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();
}
Ejecución de la aplicación
¡Vamos a ejecutar la aplicación!
dotnet run
Definición de funciones y filtro de resultados
Ahora que ha realizado su primera llamada a Bing Web Search API, veamos algunas funciones que resaltan la funcionalidad del SDK para perfeccionar las consultas y filtrar los resultados. Cada función se puede agregar a la aplicación de C# creada en la sección anterior.
Limitación del número de resultados devueltos por Bing
Este ejemplo utiliza los parámetros count
y offset
para limitar el número de resultados devueltos para "Best restaurants in Seattle" ("Los mejores restaurantes de Seattle").
Name
y Url
se imprimen para el primer resultado.
Agregue este código a su proyecto de consola:
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); } }
Agregue
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(); }
Ejecute la aplicación.
Filtro para noticias
Este ejemplo utiliza el parámetro response_filter
para filtrar los resultados de búsqueda. Los resultados de búsqueda devueltos se limitan a los artículos de noticias para "Microsoft".
Name
y Url
se imprimen para el primer resultado.
Agregue este código a su proyecto de consola:
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); } }
Agregue
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(); }
Ejecute la aplicación.
Uso de búsqueda segura, recuento de respuestas y filtro de promoción
Este ejemplo utiliza los parámetros answer_count
, promote
y safe_search
para filtrar los resultados de búsqueda para "Music Videos" ("Vídeos musicales").
Name
y ContentUrl
se muestran para el primer resultado.
Agregue este código a su proyecto de consola:
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); } }
Agregue
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(); }
Ejecute la aplicación.
Limpieza de recursos
Cuando haya terminado con este proyecto, asegúrese de quitar la clave de suscripción desde el código de la aplicación.
Pasos siguientes
La biblioteca cliente de Bing Web Search facilita la integración de Bing Web Search en la aplicación de Java. En esta guía de inicio rápido, aprenderá a enviar una solicitud, recibir una respuesta JSON, y filtrar y analizar los resultados.
¿Desea ver el código ahora mismo? En GitHub se encuentran disponibles ejemplos de bibliotecas cliente de Bing Search para Java.
Prerrequisitos
Estas son algunas cosas que necesitará antes de ejecutar esta guía de inicio rápido:
- JDK 7 o 8
- Apache Maven o herramienta de automatización de compilación que prefiera
- Una clave de suscripción
Creación de un recurso de Azure
Comience a usar la API Bing Web Search mediante la creación de uno de los recursos de Azure que se indican a continuación:
- Disponible en Azure Portal hasta que lo elimine.
- Use el plan de tarifa gratuito para probar el servicio y actualícelo más adelante a un nivel de pago para producción.
- Disponible en Azure Portal hasta que lo elimine.
- Utilice la misma clave y el mismo punto de conexión para sus aplicaciones en varios servicios de Azure AI.
Creación de un proyecto y configuración de su archivo POM
Cree un proyecto de Java mediante Maven o la herramienta de automatización de compilación que prefiera. Suponiendo que utilice Maven, agregue las siguientes líneas al archivo de modelo de objetos de proyectos (POM). Reemplace todas las instancias de mainClass
por la aplicación.
<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>
Declaración de dependencias
Abra el proyecto en su IDE o editor favorito e importe estas dependencias:
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;
Si ha creado el proyecto con Maven, el paquete ya debe estar declarado. En caso contrario, declare el paquete ahora. Por ejemplo:
package com.bingwebsearch.app
Declaración de la clase BingWebSearchSample
Declare la clase BingWebSearchSample
. Incluirá la mayor parte de nuestro código, incluido el método main
.
public class BingWebSearchSample {
// The code in the following sections goes here.
}
Creación de una solicitud
El método runSample
, que se encuentra en la clase BingWebSearchSample
, crea la solicitud. Copie este código en la aplicación:
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...
Control de la respuesta
A continuación, vamos a agregar un código para analizar la respuesta e imprimir los resultados. Se imprimen name
y url
para la primera página web, imagen, artículo de noticias y vídeo si están incluidos en el objeto de respuesta.
/*
* 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...");
}
Declaración del método main
En esta aplicación, el método main incluye código que crea instancias del cliente, valida subscriptionKey
y llama a runSample
. Asegúrese de escribir una clave de suscripción válida para la cuenta de Azure antes de continuar.
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();
}
}
Ejecución del programa
¡El último paso es ejecutar el programa!
mvn compile exec:java
Limpieza de recursos
Cuando haya terminado con este proyecto, asegúrese de quitar la clave de suscripción desde el código del programa.
Pasos siguientes
Vea también
La biblioteca cliente de Bing Web Search facilita la integración de Bing Web Search en la aplicación de Node.js. En esta guía de inicio rápido, aprenderá a crear una instancia de un cliente, enviar una solicitud e imprimir la respuesta.
¿Desea ver el código ahora mismo? En GitHub se encuentran disponibles ejemplos de bibliotecas cliente de Bing Search para JavaScript.
Prerequisites
Estas son algunas cosas que necesitará antes de ejecutar esta guía de inicio rápido:
- Node.js 6 o posterior
- Una clave de suscripción
Creación de un recurso de Azure
Comience a usar la API Bing Web Search mediante la creación de uno de los recursos de Azure que se indican a continuación:
- Disponible en Azure Portal hasta que lo elimine.
- Use el plan de tarifa gratuito para probar el servicio y actualícelo más adelante a un nivel de pago para producción.
- Disponible en Azure Portal hasta que lo elimine.
- Utilice la misma clave y el mismo punto de conexión para sus aplicaciones en varios servicios de Azure AI.
Configurado su entorno de desarrollo
Empecemos por la configuración del entorno de desarrollo para nuestro proyecto de Node.js.
Cree un directorio para su proyecto:
mkdir YOUR_PROJECT
Cree un archivo de paquete:
cd YOUR_PROJECT npm init
Ahora, vamos a instalar algunos módulos de Azure y agregarlos a
package.json
:npm install --save @azure/cognitiveservices-websearch npm install --save @azure/ms-rest-azure-js
Creación de un proyecto y declaración de los módulos necesarios
En el mismo directorio que su package.json
, cree un nuevo proyecto de Node.js con su editor o IDE favorito. Por ejemplo: sample.js
.
A continuación, copie este código en el proyecto. Se cargan los módulos instalados en la sección anterior.
const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
const WebSearchAPIClient = require('@azure/cognitiveservices-websearch');
Creación de una instancia del cliente
Este código crea una instancia de un cliente mediante el módulo @azure/cognitiveservices-websearch
. Asegúrese de escribir una clave de suscripción válida para la cuenta de Azure antes de continuar.
let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
let webSearchApiClient = new WebSearchAPIClient(credentials);
Presentación de solicitud e impresión de resultados
Utilice el cliente para enviar una consulta de búsqueda a Bing Web Search. Si la respuesta incluye resultados para cualquiera de los elementos de la matriz properties
, se imprime result.value
en la consola.
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;
})
Ejecución del programa
¡El último paso es ejecutar el programa!
Limpieza de recursos
Cuando haya terminado con este proyecto, asegúrese de quitar la clave de suscripción desde el código del programa.
Pasos siguientes
Consulte también
La biblioteca cliente de Bing Web Search facilita la integración de Bing Web Search en la aplicación de Python. En esta guía de inicio rápido, aprenderá a enviar una solicitud, recibir una respuesta JSON, y filtrar y analizar los resultados.
¿Desea ver el código ahora mismo? En GitHub se encuentran disponibles ejemplos de bibliotecas cliente de Bing Search para Python.
Requisitos previos
El SDK de Bing Web Search es compatible con Python 2.7 o 3.6 y versiones posteriores. Se recomienda usar un entorno virtual para esta guía de inicio rápido.
- Python 2.7 o 3.6 y versiones posteriores
- virtualenv para Python 2.7
- venv para Python 3.x
Creación de un recurso de Azure
Comience a usar la API Bing Web Search mediante la creación de uno de los recursos de Azure que se indican a continuación:
- Disponible en Azure Portal hasta que lo elimine.
- Use el plan de tarifa gratuito para probar el servicio y actualícelo más adelante a un nivel de pago para producción.
- Disponible en Azure Portal hasta que lo elimine.
- Utilice la misma clave y el mismo punto de conexión para sus aplicaciones en varios servicios de Azure AI.
Creación y configuración del entorno virtual
Las instrucciones para instalar y configurar un entorno virtual son diferentes para Python 2.x y Python 3.x. Siga estos pasos para crear e inicializar el entorno virtual.
Python 2.x
Cree un entorno virtual con virtualenv
para Python 2.7:
virtualenv mytestenv
Active su entorno:
cd mytestenv
source bin/activate
Instale las dependencias del SDK de Bing Web Search:
python -m pip install azure-cognitiveservices-search-websearch
Python 3.x
Cree un entorno virtual con venv
para Python 3.x:
python -m venv mytestenv
Active su entorno:
mytestenv\Scripts\activate.bat
Instale las dependencias del SDK de Bing Web Search:
cd mytestenv
python -m pip install azure-cognitiveservices-search-websearch
Creación de un cliente e impresión de los primeros resultados
Ahora que ha configurado el entorno virtual e instalado las dependencias, vamos a crear un cliente. El cliente va a controlar solicitudes y respuestas de Bing Web Search API.
Si la respuesta contiene páginas web, imágenes, noticias o vídeos, se imprime el primer resultado para cada uno.
Cree un nuevo proyecto de Python con su IDE o editor favorito.
Copie este código de ejemplo en el proyecto.
endpoint
puede ser el punto de conexión global siguiente o el punto de conexión del subdominio personalizado que se muestra en Azure Portal para el recurso:# 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...")
Reemplace
SUBSCRIPTION_KEY
por una clave de suscripción válida.Reemplace
YOUR_ENDPOINT
por la dirección URL del punto de conexión en el portal y quite la sección "Bing/v7.0" del punto de conexión.Ejecute el programa. Por ejemplo:
python your_program.py
.
Definición de funciones y filtro de resultados
Ahora que ha realizado su primera llamada a Bing Web Search API, revise algunas funciones. En las siguientes secciones se resalta la funcionalidad de SDK para perfeccionar las consultas y filtrar los resultados. Cada función se puede agregar al programa de Python que creó en la sección anterior.
Limitación del número de resultados devueltos por Bing
Este ejemplo utiliza los parámetros count
y offset
para limitar el número de resultados devueltos mediante el search
método del SDK.
name
y url
se imprimen para el primer resultado.
Agregue este código a su proyecto de 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))
Ejecute el programa.
Filtro de noticias y actualización
Este ejemplo utiliza los parámetros response_filter
y freshness
para filtrar los resultados de búsqueda mediante el search
método del SDK. Los resultados de búsqueda devueltos se limitan a artículos de noticias y páginas que Bing ha detectado en las últimas 24 horas.
name
y url
se imprimen para el primer resultado.
Agregue este código a su proyecto de 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)
Ejecute el programa.
Uso de búsqueda segura, recuento de respuestas y filtro de promoción
Este ejemplo utiliza los parámetros answer_count
, promote
y safe_search
para filtrar los resultados de búsqueda mediante el search
método del SDK.
name
y url
se muestran para el primer resultado.
Agregue este código a su proyecto de 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))
Ejecute el programa.
Limpieza de recursos
Cuando haya terminado con este proyecto, asegúrese de quitar la clave de suscripción desde el código del programa y desactivar el entorno virtual.