Rychlý start: Použití klientské knihovny Bingu pro vyhledávání na webu
Upozornění
30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API Bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingu najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.
Klientská knihovna Bingu pro vyhledávání na webu usnadňuje integraci webového vyhledávání Bingu do aplikace jazyka C#. V tomto rychlém startu se dozvíte, jak vytvořit instanci klienta, odeslat požadavek a vytisknout odpověď.
Chcete se rovnou podívat na kód? Ukázky pro klientské knihovny Vyhledávání Bingu pro .NET jsou k dispozici na GitHubu.
Požadavky
Tady je pár věcí, které budete potřebovat na začátku tohoto rychlého startu:
Vytvoření prostředku Azure
Začněte používat rozhraní API Bingu pro vyhledávání na webu tím, že vytvoříte jeden z následujících prostředků Azure:
prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- K vyzkoušení služby použijte bezplatnou cenovou úroveň a později ji upgradujte na placenou úroveň pro produkční prostředí.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Vytvoření projektu a instalace závislostí
Tip
Získejte nejnovější kód jako řešení sady Visual Studio z GitHubu.
V prvním kroku vytvoříme nový projekt konzoly. Pokud potřebujete pomoc s nastavením projektu konzoly, podívejte se na Hello World – Váš první program (Průvodce programováním v C#). Pokud chcete ve své aplikaci použít sadu SDK Bingu pro vyhledávání na web, budete si muset nainstalovat Microsoft.Azure.CognitiveServices.Search.WebSearch
pomocí správce balíčků NuGet.
Balíček sady SDK webového vyhledávání také nainstaluje:
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
Deklarace závislostí
Otevřete projekt v sadě Visual Studio nebo v editoru Visual Studio Code a naimportujte tyto závislosti:
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;
Vytvoření projektu pro generování uživatelského rozhraní
Při vytvoření nového projektu konzoly by se také měl pro aplikaci vytvořit obor názvů a třída. Program by měl vypadat jako v tomto příkladu:
namespace WebSearchSDK
{
class YOUR_PROGRAM
{
// The code in the following sections goes here.
}
}
V následujících oddílech vytvoříme v této třídě ukázkovou aplikaci.
Vytvoření požadavku
Tento kód vytvoří vyhledávací dotaz.
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);
}
}
Zpracování odpovědi
Dále přidáme kód, který parsuje odpověď a vytiskne výsledky. Vytiskne se Name
a Url
první webové stránky, obrázku, článku nebo videa, pokud tato položka v objektu odpovědi existuje.
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...");
}
Deklarace hlavní metody
V této aplikaci obsahuje hlavní metoda kód, který vytvoří instanci klienta, ověří subscriptionKey
a volá WebResults
. Než budete pokračovat, ujistěte se, že jste zadali platný klíč předplatného účtu Azure.
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();
}
Spuštění aplikace
Pojďme spustit aplikaci.
dotnet run
Definice funkcí a filtrování výsledků
Po prvním volání rozhraní API Bingu pro vyhledávání na webu se pojďme podívat na několik funkcí, které doplňují funkce sady SDK o přesnější dotazy a filtrování výsledků. Každou funkci můžete přidat do aplikace v jazyce C#, kterou jste vytvořili v předchozí části.
Omezení počtu výsledků vrácených Bingem
V této ukázce jsou parametry count
a offset
použité k omezení počtu výsledků vrácených na dotaz „Best restaurants in Seattle“. Vytiskne se Name
a Url
prvního výsledku.
Do projektu konzoly přidejte tento kód:
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); } }
Přidejte
WebResultsWithCountAndOffset
domain
: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(); }
Spusťte aplikaci.
Filtrování zpráv
V této ukázce použijeme parametr response_filter
k filtrování výsledků hledání. Vrácené výsledky hledání jsou omezené na zprávy obsahující „Microsoft“. Vytiskne se Name
a Url
prvního výsledku.
Do projektu konzoly přidejte tento kód:
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); } }
Přidejte
WebResultsWithCountAndOffset
domain
: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(); }
Spusťte aplikaci.
Použití bezpečného hledání, počtu odpovědí a propagačního filtru
V této ukázce použijeme parametry answer_count
, promote
a safe_search
k filtrování výsledků hledání pro „Music Videos“. Zobrazí se Name
a ContentUrl
prvního výsledku.
Do projektu konzoly přidejte tento kód:
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); } }
Přidejte
WebResultsWithCountAndOffset
domain
: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(); }
Spusťte aplikaci.
Vyčištění prostředků
Až projekt dokončíte, nezapomeňte z kódu aplikace odebrat klíč předplatného.
Další kroky
Klientská knihovna Bingu pro vyhledávání na webu usnadňuje integraci webového vyhledávání Bingu do vaší aplikace v Javě. V tomto rychlém startu se naučíte poslat požadavek, přijmout odpověď JSON, filtrovat a parsovat výsledky.
Chcete se rovnou podívat na kód? Ukázky klientských knihoven Vyhledávání Bingu pro Javu jsou k dispozici na GitHubu.
Požadavky
Tady je pár věcí, které budete potřebovat na začátku tohoto rychlého startu:
- JDK 7 nebo 8
- Apache Maven nebo jiný oblíbený nástroj na automatické sestavení
- Klíč předplatného
Vytvoření prostředku Azure
Začněte používat rozhraní API Bingu pro vyhledávání na webu tím, že vytvoříte jeden z následujících prostředků Azure:
prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- K vyzkoušení služby použijte bezplatnou cenovou úroveň a později ji upgradujte na placenou úroveň pro produkční prostředí.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Vytvoření projektu a nastavení souboru POM
Vytvořte nový projekt Java. Použijte Maven nebo jiný oblíbený nástroj na automatické sestavení. Za předpokladu, že používáte Maven, přidejte do souboru POM (Project Object Model) následující řádky. Všechny instance mainClass
nahraďte svou aplikací.
<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>
Deklarace závislostí
Otevřete projekt v oblíbeném integrovaném vývojovém prostředí nebo editoru a naimportujte tyto závislosti:
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;
Pokud jste k vytvoření projektu použili Maven, balíček by měl být deklarovaný. Pokud není, deklarujte ho teď. Příklad:
package com.bingwebsearch.app
Deklarace třídy BingWebSearchSample
Deklarujte třídu BingWebSearchSample
. Bude obsahovat většinu kódu, včetně metody main
.
public class BingWebSearchSample {
// The code in the following sections goes here.
}
Vytvoření požadavku
Požadavek vytvoří metoda runSample
, která žije ve třídě BingWebSearchSample
. Zkopírujte do své aplikace tento kód:
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...
Zpracování odpovědi
Dále přidáme kód, který parsuje odpověď a vytiskne výsledky. Vytiskne se name
a url
první webové stránky, obrázku, článku nebo videa, pokud objekt odpovědi tuto položku obsahuje.
/*
* 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...");
}
Deklarace hlavní metody
V této aplikaci obsahuje hlavní metoda kód, který vytvoří instanci klienta, ověří subscriptionKey
a volá runSample
. Než budete pokračovat, ujistěte se, že jste zadali platný klíč předplatného účtu Azure.
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();
}
}
Spuštění programu
Posledním krokem je spuštění programu.
mvn compile exec:java
Vyčištění prostředků
Až projekt dokončíte, nezapomeňte z kódu programu odebrat klíč předplatného.
Další kroky
Viz také
Klientská knihovna Bingu pro vyhledávání na webu usnadňuje integraci webového vyhledávání Bingu do Node.js aplikace. V tomto rychlém startu se dozvíte, jak vytvořit instanci klienta, odeslat požadavek a vytisknout odpověď.
Chcete se rovnou podívat na kód? Ukázky Vyhledávání Bingu klientských knihoven pro JavaScript jsou k dispozici na GitHubu.
Požadavky
Tady je pár věcí, které budete potřebovat na začátku tohoto rychlého startu:
- Node.js 6 nebo novější
- Klíč předplatného
Vytvoření prostředku Azure
Začněte používat rozhraní API Bingu pro vyhledávání na webu tím, že vytvoříte jeden z následujících prostředků Azure:
prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- K vyzkoušení služby použijte bezplatnou cenovou úroveň a později ji upgradujte na placenou úroveň pro produkční prostředí.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Nastavíte vývojové prostředí
Nejprve si pro svůj projekt Node.js nastavíme vývojové prostředí.
Vytvořte pro svůj projekt nový adresář:
mkdir YOUR_PROJECT
Vytvořte nový soubor balíčku:
cd YOUR_PROJECT npm init
Teď nainstalujeme některé moduly Azure a přidáme je do
package.json
:npm install --save @azure/cognitiveservices-websearch npm install --save @azure/ms-rest-azure-js
Vytvoření projektu a deklarace požadovaných modulů
V oblíbeném integrovaném vývojovém prostředí nebo editoru vytvořte ve stejném adresáři, jako je soubor package.json
, nový projekt Node.js. Příklad: sample.js
.
Teď zkopírujte tento kód do svého projektu. Načte moduly nainstalované v předchozí části.
const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
const WebSearchAPIClient = require('@azure/cognitiveservices-websearch');
Vytvoření instance klienta
Tento kód vytvoří instanci klienta s použitím modulu @azure/cognitiveservices-websearch
. Než budete pokračovat, ujistěte se, že jste zadali platný klíč předplatného účtu Azure.
let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
let webSearchApiClient = new WebSearchAPIClient(credentials);
Vytvoření požadavku a tisk výsledků
Z klienta pošlete vyhledávací dotaz Bingu pro vyhledávání na webu. Pokud odpověď obsahuje výsledky některých položek v poli properties
, vytiskne konzola 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;
})
Spuštění programu
Posledním krokem je spuštění programu.
Vyčištění prostředků
Až projekt dokončíte, nezapomeňte z kódu programu odebrat klíč předplatného.
Další kroky
Viz také
Klientská knihovna Bingu pro vyhledávání na webu usnadňuje integraci webového vyhledávání Bingu do vaší aplikace v Pythonu. V tomto rychlém startu se naučíte poslat požadavek, přijmout odpověď JSON, filtrovat a parsovat výsledky.
Chcete se rovnou podívat na kód? Ukázky pro klientské knihovny Vyhledávání Bingu pro Python jsou k dispozici na GitHubu.
Požadavky
Sada SDK Bingu pro vyhledávání na webu je kompatibilní s Pythonem 2.7 nebo 3.6 nebo novějším. Pro tento článek Rychlý start doporučujeme použít virtuální prostředí.
- Python 2.7 nebo 3.6 nebo novější
- virtualenv pro Python 2.7
- venv pro Python 3.x
Vytvoření prostředku Azure
Začněte používat rozhraní API Bingu pro vyhledávání na webu tím, že vytvoříte jeden z následujících prostředků Azure:
prostředek Vyhledávání Bingu v7
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- K vyzkoušení služby použijte bezplatnou cenovou úroveň a později ji upgradujte na placenou úroveň pro produkční prostředí.
- K dispozici prostřednictvím Azure Portal, dokud prostředek neodstraníte.
- Pro své aplikace použijte stejný klíč a koncový bod napříč několika službami Azure AI.
Vytvoření a konfigurace virtuálního prostředí
Pokyny k nastavení a konfiguraci virtuálního prostředí se liší pro python 2.x a Python 3.x. K vytvoření a inicializaci virtuálního prostředí použijte následující postup.
Python 2.x
Vytvoření virtuálního prostředí příkazem virtualenv
Pythonu 2.7:
virtualenv mytestenv
Aktivace prostředí:
cd mytestenv
source bin/activate
Instalace závislostí sady SDK Bingu pro vyhledávání na webu:
python -m pip install azure-cognitiveservices-search-websearch
Python 3.x
Vytvoření virtuálního prostředí příkazem venv
Pythonu 3.x:
python -m venv mytestenv
Aktivace prostředí:
mytestenv\Scripts\activate.bat
Instalace závislostí sady SDK Bingu pro vyhledávání na webu:
cd mytestenv
python -m pip install azure-cognitiveservices-search-websearch
Vytvoření klienta a vytištění prvních výsledků
Nastavili jste virtuální prostředí a nainstalovali závislosti. Teď vytvoříme klienta. Klient bude zpracovávat požadavky a odpovědi rozhraní API Bingu pro vyhledávání na webu.
Pokud odpověď obsahuje webové stránky, obrázky, zprávy nebo videa, vytiskne se první výsledek každé kategorie.
Vytvořte nový projekt v jazyce Python v oblíbeném integrovaném vývojovém prostředí nebo editoru.
Zkopírujte tento ukázkový kód do projektu.
endpoint
může to být globální koncový bod níže nebo koncový bod vlastní subdomény zobrazený v Azure Portal vašeho prostředku:# 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...")
Hodnotu
SUBSCRIPTION_KEY
nahraďte platným klíčem předplatného.Na portálu nahraďte
YOUR_ENDPOINT
adresou URL vašeho koncového bodu a odeberte z koncového bodu oddíl bing/v7.0.Spustíte program. Příklad:
python your_program.py
.
Definice funkcí a filtrování výsledků
Teď, když jste provedli první volání rozhraní API Bingu pro vyhledávání na webu, se podíváme na několik funkcí. Následující části zvýrazňují funkce sady SDK pro zpřesnění dotazů a filtrování výsledků. Každou funkci je možné přidat do programu Pythonu, který jste vytvořili v předchozí části.
Omezení počtu výsledků vrácených Bingem
Tato ukázka používá count
parametry a offset
k omezení počtu výsledků vrácených metodou sady SDKsearch
. Vytiskne se name
a url
prvního výsledku.
Do projektu v Pythonu přidejte tento kód:
# 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))
Spustíte program.
Filtrování zpráv podle stáří
Tato ukázka používá response_filter
parametry a freshness
k filtrování výsledků hledání pomocí metody sady SDKsearch
. Vrácené výsledky hledání jsou omezené na nové zprávy a stránky, které Bing našel za posledních 24 hodin. Vytiskne se name
a url
prvního výsledku.
Do projektu v Pythonu přidejte tento kód:
# 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)
Spustíte program.
Použití bezpečného hledání, počtu odpovědí a propagačního filtru
Tato ukázka používá answer_count
parametry , promote
a safe_search
k filtrování výsledků hledání pomocí metody sady SDKsearch
. Zobrazí se name
a url
prvního výsledku.
Do projektu v Pythonu přidejte tento kód:
# 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))
Spustíte program.
Vyčištění prostředků
Až projekt dokončíte, nezapomeňte z kódu programu odebrat klíč předplatného a deaktivovat virtuální prostředí.