Quickstart: Use uma biblioteca de clientes de pesquisa web Bing

Aviso

Em 30 de outubro de 2020, as APIs de pesquisa de Bing passaram dos Serviços Cognitivos para Bing Serviços de Busca. Esta documentação é fornecida apenas para referência. Para obter documentação atualizada, consulte a documentação Bing pesquisar a API. Para obter instruções sobre a criação de novos recursos Azure para Bing pesquisa, consulte Criar um recurso de pesquisa Bing através do Azure Marketplace.

A biblioteca de clientes Bing Web Search facilita a integração Bing Pesquisa web na sua aplicação C#. Neste início rápido, irá aprender a instanciar um cliente, a enviar um pedido e a imprimir a resposta.

Quer ver o código imediatamente? As amostras para as bibliotecas de clientes Bing search para .NET estão disponíveis em GitHub.

Pré-requisitos

Aqui estão algumas coisas de que irá precisar antes de executar este início rápido:

Criar um recurso Azure

Comece a utilizar a API de pesquisa web Bing, criando um dos seguintes recursos Azure:

Bing Procurar recurso v7

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use o nível de preços gratuitos para experimentar o serviço e atualize mais tarde para um nível pago para produção.

Recurso multi-serviço

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use a mesma chave e ponto final para as suas aplicações, através de vários Serviços Cognitivos.

Criar um projeto e instalar dependências

Dica

Obter o código mais recente como uma solução do Visual Studio a partir do GitHub.

O primeiro passo é criar um novo projeto de consola. Se precisar de ajuda para configurar um projeto de consola, consulte Hello World -- O Seu Primeiro Programa (C# Guia de Programação). Para utilizar o SDK de Pesquisa na Web do Bing na sua aplicação, terá de instalar Microsoft.Azure.CognitiveServices.Search.WebSearch através do Gestor de Pacotes NuGet.

O pacote do SDK de Pesquisa na Web também instala:

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

Declarar dependências

Abra o projeto no Visual Studio ou Visual Studio Code e importe estas dependências:

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;

Criar a estrutura do projeto

Quando criou o seu novo projeto de consola, deverá ter sido criado um espaço de nomes e uma classe para a sua aplicação. O seu programa deve parecer-se com este exemplo:

namespace WebSearchSDK
{
    class YOUR_PROGRAM
    {

        // The code in the following sections goes here.

    }
}

Nas secções seguintes, vamos criar o nosso exemplo de aplicação nesta classe.

Construir um pedido

Este código constrói a consulta de pesquisa.

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);
    }
}

Processar a resposta

Em seguida, vamos adicionar algum código para analisar a resposta e imprimir os resultados. O Name e Url da primeira página Web, imagem, artigo de notícias e vídeo são impressos se estiverem presentes no objeto de resposta.

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...");
}

Declarar o método principal

Nesta aplicação, o método principal inclui código que instancia o cliente, valida subscriptionKey e chama WebResults. Certifique-se de que introduz uma chave de subscrição válida para a sua conta do 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();
}

Executar a aplicação

Vamos executar a aplicação!

dotnet run

Definir funções e filtrar resultados

Agora que fez a sua primeira chamada à API de Pesquisa na Web do Bing, vamos ver algumas funções que destacam a funcionalidade do SDK para refinar consultas e filtrar resultados. Pode adicionar cada função à aplicação C# criada na secção anterior.

Limitar o número de resultados devolvidos pelo Bing

Este exemplo utiliza os parâmetros count e offset para limitar o número de resultados devolvidos para "Melhor restaurantes em Seattle". O Name e Url para o primeiro resultado são impressos.

  1. Adicione este código ao seu projeto 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);
        }
    }
    
  2. Adicione WebResultsWithCountAndOffset a main:

    static async Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Execute a aplicação.

Filtrar notícias

Este exemplo utiliza o parâmetro response_filter para filtrar os resultados da pesquisa. Os resultados da pesquisa devolvidos estão limitados a artigos de notícias para "Microsoft". O Name e Url para o primeiro resultado são impressos.

  1. Adicione este código ao seu projeto 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);
        }
    }
    
  2. Adicione WebResultsWithCountAndOffset a main:

    static Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
        // Search with news filter...
        await WebSearchWithResponseFilter(client);
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Execute a aplicação.

Utilizar a pesquisa segura, a contagem de respostas e o filtro de promover

Este exemplo utiliza os parâmetros answer_count, promote e safe_search para filtrar os resultados da pesquisa para "Vídeos de Música". O Name e ContentUrl para o primeiro resultado são apresentados.

  1. Adicione este código ao seu projeto 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);
        }
    }
    
  2. Adicione WebResultsWithCountAndOffset a main:

    static async Task Main(string[] args)
    {
        var client = new WebSearchClient(new ApiKeyServiceClientCredentials("YOUR_SUBSCRIPTION_KEY"));
    
        await WebResults(client);
        // Search with count and offset...
        await WebResultsWithCountAndOffset(client);  
        // Search with news filter...
        await WebSearchWithResponseFilter(client);
        // Search with answer count, promote, and safe search
        await WebSearchWithAnswerCountPromoteAndSafeSearch(client);
    
        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }
    
  3. Execute a aplicação.

Limpar os recursos

Quando tiver terminado de fazer o que quer neste projeto, não se esqueça de remover a sua chave de subscrição do código da aplicação.

Passos seguintes

A biblioteca de clientes Bing Web Search facilita a integração Bing Pesquisa web na sua aplicação Java. Neste início rápido, vai aprender como enviar um pedido, receber uma resposta JSON e filtrar e analisar os resultados.

Quer ver o código imediatamente? As amostras para as bibliotecas de clientes de pesquisa de Bing para Java estão disponíveis no GitHub.

Pré-requisitos

Aqui estão algumas coisas de que irá precisar antes de executar este início rápido:

  • JDK 7 ou 8
  • O Apache Maven ou a sua ferramenta de automatização de compilação favorita
  • Uma chave de subscrição

Criar um recurso Azure

Comece a utilizar a API de pesquisa web Bing, criando um dos seguintes recursos Azure:

Bing Procurar recurso v7

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use o nível de preços gratuitos para experimentar o serviço e atualize mais tarde para um nível pago para produção.

Recurso multi-serviço

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use a mesma chave e ponto final para as suas aplicações, através de vários Serviços Cognitivos.

Crie um projeto e crie o seu ficheiro POM

Crie um novo projeto do Java com o Maven ou com a sua ferramenta de automatização de compilação favorita. Assumindo que está a usar o Maven, adicione as seguintes linhas ao seu ficheiro Project Object Model (POM). Substitua todas as instâncias de mainClass pela sua aplicação.

<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>

Declarar dependências

Abra o projeto no seu IDE ou editor favorito e importe estas dependências:

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 tiver criado o projeto com o Maven, o pacote já deve estar declarado. Caso contrário, declare agora o pacote. Por exemplo:

package com.bingwebsearch.app

Declarar a classe BingWebSearchSample

Declare a classe BingWebSearchSample. Ela irá incluir a maior parte do nosso código, incluindo o método main.

public class BingWebSearchSample {

// The code in the following sections goes here.

}

Construir um pedido

O método runSample, que reside na classe BingWebSearchSample, constrói o pedido. Copie este código para a sua aplicação:

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...

Processar a resposta

Em seguida, vamos adicionar algum código para analisar a resposta e imprimir os resultados. O name e url da primeira página Web, imagem, artigo de notícias e vídeo são impressos quando estiverem incluídos no objeto de resposta.

/*
* 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...");
}

Declarar o método principal

Nesta aplicação, o método principal inclui código que instancia o cliente, valida subscriptionKey e chama runSample. Certifique-se de que introduz uma chave de subscrição válida para a sua conta do 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();
    }
}

Execute o programa

O passo final é executar o programa!

mvn compile exec:java

Limpar os recursos

Quando tiver terminado de fazer o que quer neste projeto, não se esqueça de remover a sua chave de subscrição do código do programa.

Passos seguintes

Ver também

A biblioteca de clientes de pesquisa web Bing facilita a integração Bing Pesquisa web na sua aplicação Node.js. Neste início rápido, irá aprender a instanciar um cliente, a enviar um pedido e a imprimir a resposta.

Quer ver o código imediatamente? As amostras para as bibliotecas de clientes de pesquisa Bing para JavaScript estão disponíveis no GitHub.

Pré-requisitos

Aqui estão algumas coisas de que irá precisar antes de executar este início rápido:

  • Node.js 6 ou posterior
  • Uma chave de subscrição

Criar um recurso Azure

Comece a utilizar a API de pesquisa web Bing, criando um dos seguintes recursos Azure:

Bing Procurar recurso v7

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use o nível de preços gratuitos para experimentar o serviço e atualize mais tarde para um nível pago para produção.

Recurso multi-serviço

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use a mesma chave e ponto final para as suas aplicações, através de vários Serviços Cognitivos.

Configurar o ambiente de desenvolvimento

Vamos começar por configurar o ambiente de desenvolvimento para o nosso projeto do Node.js.

  1. Crie um diretório novo para o seu projeto:

    mkdir YOUR_PROJECT
    
  2. Crie um novo ficheiro de pacote:

    cd YOUR_PROJECT
    npm init
    
  3. Agora, vamos instalar alguns módulos Azure e adicioná-los ao package.json:

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

Criar um projeto e declarar os módulos exigidos

No mesmo diretório que o seu package.json, crie um novo projeto do Node.js com o seu IDE ou editor favorito. Por exemplo: sample.js.

Em seguida, copie este código para o seu projeto. Ele carrega os módulos instalados na secção anterior.

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

Instanciar o cliente

Este código instancia um cliente e utiliza o módulo @azure/cognitiveservices-websearch. Certifique-se de que introduz uma chave de subscrição válida para a sua conta do Azure antes de continuar.

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

Fazer um pedido e imprimir os resultados

Utilize o cliente para enviar uma consulta de pesquisa para a Pesquisa na Web do Bing. Se a resposta inclui os resultados para qualquer um dos itens na matriz properties, o result.value é impresso na 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;
})

Execute o programa

O passo final é executar o programa!

Limpar os recursos

Quando tiver terminado de fazer o que quer neste projeto, não se esqueça de remover a sua chave de subscrição do código do programa.

Passos seguintes

Ver também

A biblioteca de clientes Bing Web Search facilita a integração Bing pesquisa web na sua aplicação Python. Neste início rápido, vai aprender como enviar um pedido, receber uma resposta JSON e filtrar e analisar os resultados.

Quer ver o código imediatamente? As amostras para as bibliotecas de clientes de pesquisa de Bing para Python estão disponíveis em GitHub.

Pré-requisitos

O Bing Web Search SDK é compatível com Python 2.7 ou 3.6+. Recomendamos utilizar um ambiente virtual para este início rápido.

Criar um recurso Azure

Comece a utilizar a API de pesquisa web Bing, criando um dos seguintes recursos Azure:

Bing Procurar recurso v7

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use o nível de preços gratuitos para experimentar o serviço e atualize mais tarde para um nível pago para produção.

Recurso multi-serviço

  • Disponível através do portal do Azure até eliminar o recurso.
  • Use a mesma chave e ponto final para as suas aplicações, através de vários Serviços Cognitivos.

Criar e configurar o seu ambiente virtual

As instruções para instalar e configurar um ambiente virtual são diferentes para o Python 2.x e Python 3.x. Siga os passos abaixo para criar e inicializar o ambiente virtual.

Python 2.x

Crie um ambiente virtual com virtualenv para Python 2.7:

virtualenv mytestenv

Ativar o seu ambiente:

cd mytestenv
source bin/activate

Instale as dependências do SDK de Pesquisa na Web do Bing:

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

Python 3.x

Crie um ambiente virtual com venv para Python 3.x:

python -m venv mytestenv

Ativar o seu ambiente:

mytestenv\Scripts\activate.bat

Instale as dependências do SDK de Pesquisa na Web do Bing:

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

Criar um cliente e imprimir os seus primeiros resultados

Agora que configurou o seu ambiente virtual e instalou dependências, vamos criar um cliente. O cliente irá processar pedidos para e respostas da API de Pesquisa na Web do Bing.

Se a resposta contiver páginas Web, imagens, notícias ou vídeos, será impresso o primeiro resultado para cada.

  1. Crie um novo projeto do Python através do seu editor ou IDE favorito.

  2. Copie este código de amostra para o seu projeto. endpointpode ser o ponto final global abaixo, ou o ponto final personalizado subdomínio exibido no portal do Azure para o seu 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...")
    
  3. Substitua SUBSCRIPTION_KEY por uma chave de subscrição válida.

  4. Substitua-a YOUR_ENDPOINT pelo url do ponto final no portal e retire a secção "bing/v7.0" do ponto final.

  5. Executar o programa. Por exemplo: python your_program.py.

Definir funções e filtrar resultados

Agora que fez a sua primeira chamada para a API de pesquisa web Bing, vamos ver algumas funções. As secções seguintes destacam a funcionalidade SDK para refinar consultas e resultados de filtragem. Cada função pode ser adicionada ao programa Python que criou na secção anterior.

Limitar o número de resultados devolvidos pelo Bing

Esta amostra utiliza os count parâmetros e offset parâmetros para limitar o número de resultados devolvidos usando o método do searchSDK. O name e url para o primeiro resultado são impressos.

  1. Adicione este código ao seu projeto 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://docs.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
             '''
             web_data = client.web.search(query="Best restaurants in Seattle", offset=10, count=20)
             print("\r\nSearching for \"Best restaurants in Seattle\"")
    
             if web_data.web_pages.value:
                 '''
                 If web pages are available, print the # of responses, and the first and second
                 web pages returned.
                 '''
                 print("Webpage Results#{}".format(len(web_data.web_pages.value)))
    
                 first_web_page = web_data.web_pages.value[0]
                 print("First web page name: {} ".format(first_web_page.name))
                 print("First web page URL: {} ".format(first_web_page.url))
    
             else:
                 print("Didn't find any web pages...")
    
         except Exception as err:
             print("Encountered exception. {}".format(err))
    
  2. Executar o programa.

Filtrar por notícias e atualização

Esta amostra utiliza os response_filter parâmetros e freshness parâmetros para filtrar os resultados da pesquisa utilizando o método do searchSDK. Os resultados da pesquisa devolvidos estão limitados a artigos de notícias e páginas que o Bing descobriu nas últimas 24 horas. O name e url para o primeiro resultado são impressos.

  1. Adicione este código ao seu projeto 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://docs.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
            '''
            web_data = client.web.search(query="xbox",
                response_filter=["News"],
                freshness="Day")
            print("\r\nSearching for \"xbox\" with the response filter set to \"News\" and freshness filter set to \"Day\".")
    
            '''
            If news articles are available, print the # of responses, and the first and second
            articles returned.
            '''
            if web_data.news.value:
    
                print("# of news results: {}".format(len(web_data.news.value)))
    
                first_web_page = web_data.news.value[0]
                print("First article name: {} ".format(first_web_page.name))
                print("First article URL: {} ".format(first_web_page.url))
    
                print("")
    
                second_web_page = web_data.news.value[1]
                print("\nSecond article name: {} ".format(second_web_page.name))
                print("Second article URL: {} ".format(second_web_page.url))
    
            else:
                print("Didn't find any news articles...")
    
        except Exception as err:
            print("Encountered exception. {}".format(err))
    
    # Call the function.
    web_search_with_response_filter(subscription_key)
    
  2. Executar o programa.

Utilizar a pesquisa segura, a contagem de respostas e o filtro de promover

Esta amostra utiliza os answer_count, promotee safe_search parâmetros para filtrar os resultados de pesquisa usando o método do searchSDK. O name e url para o primeiro resultado são apresentados.

  1. Adicione este código ao seu projeto 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://docs.microsoft.com/python/api/azure-cognitiveservices-search-websearch/azure.cognitiveservices.search.websearch.operations.weboperations?view=azure-python.
            '''
            web_data = client.web.search(
                query="Niagara Falls",
                answer_count=2,
                promote=["videos"],
                safe_search=SafeSearch.strict  # or directly "Strict"
            )
            print("\r\nSearching for \"Niagara Falls\"")
    
            '''
            If results are available, print the # of responses, and the first result returned.
            '''
            if web_data.web_pages.value:
    
                print("Webpage Results#{}".format(len(web_data.web_pages.value)))
    
                first_web_page = web_data.web_pages.value[0]
                print("First web page name: {} ".format(first_web_page.name))
                print("First web page URL: {} ".format(first_web_page.url))
    
            else:
                print("Didn't see any Web data..")
    
        except Exception as err:
            print("Encountered exception. {}".format(err))
    
  2. Executar o programa.

Limpar os recursos

Quando tiver terminado este projeto, certifique-se de que remove a sua chave de subscrição do código do programa e desativa o seu ambiente virtual.

Passos seguintes

Ver também