警告
2020 年 10 月 30 日、Bing Search API は Azure AI サービスから Bing Search Services に移行されました。 このドキュメントは参考用に提供されています。 更新されたドキュメントについては、Bing search API のドキュメントを参照してください。 Bing 検索用の新しい Azure リソースを作成する手順については、「Azure Marketplace から Bing Search リソースを作成する」を参照してください。
Bing Web Search クライアント ライブラリを使用すると、Bing Web Search を C# アプリケーションに簡単に統合できます。 このクイック スタートでは、クライアントのインスタンス化、要求の送信、応答の出力を行う方法について説明します。
今すぐコードを表示しますか? .NET 用の Bing Search クライアント ライブラリのサンプルは、GitHub で入手できます。
[前提条件]
このクイック スタートを実行する前に必要なものをいくつか次に示します。
- Visual Studio または
-
Visual Studio Code 2017
- Visual Studio Code の C#
- NuGet パッケージ マネージャー
- .NET Core SDK
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Web Search API の使用を開始します。
- リソースを削除するまで、Azure portal から使用できます。
- Free 価格レベルを使用してサービスを試し、後で運用環境用の有料レベルにアップグレードします。
- リソースを削除するまで、Azure portal から使用できます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
プロジェクトを作成して依存関係をインストールする
ヒント
GitHub から Visual Studio ソリューションとして最新のコードを取得します。
最初の手順では、新しいコンソール プロジェクトを作成します。 コンソール プロジェクトの設定に関するヘルプが必要な場合は、「 Hello World - Your First Program (C# プログラミング ガイド)」を参照してください。 アプリケーションで Bing Web Search SDK を使用するには、NuGet パッケージ マネージャーを使用して Microsoft.Azure.CognitiveServices.Search.WebSearch
をインストールする必要があります。
Web Search SDK パッケージには、次の項目もインストールされます。
- Microsoft.Rest.ClientRuntime
- Microsoft.Rest.ClientRuntime.Azure
- Newtonsoft.Json
依存関係を宣言する
Visual Studio または Visual Studio Code でプロジェクトを開き、次の依存関係をインポートします。
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;
プロジェクト スキャフォールディングを作成する
新しいコンソール プロジェクトを作成するときに、アプリケーションの名前空間とクラスが作成されている必要があります。 プログラムは次の例のようになります。
namespace WebSearchSDK
{
class YOUR_PROGRAM
{
// The code in the following sections goes here.
}
}
以降のセクションでは、このクラス内にサンプル アプリケーションをビルドします。
要求を作成する
このコードは、検索クエリを構築します。
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);
}
}
応答の処理
次に、応答を解析して結果を出力するコードをいくつか追加しましょう。 応答オブジェクトに存在する場合、最初の Web ページ、画像、ニュース記事、ビデオの Name
と Url
が印刷されます。
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...");
}
main メソッドを宣言する
このアプリケーションでは、main メソッドには、クライアントをインスタンス化し、 subscriptionKey
を検証し、 WebResults
を呼び出すコードが含まれています。 続行する前に、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();
}
アプリケーションを実行する
アプリケーションを実行しましょう。
dotnet run
関数を定義して結果をフィルター処理する
Bing Web Search API の最初の呼び出しを行ったので、クエリを絞り込んで結果をフィルター処理するための SDK 機能を強調するいくつかの関数を見てみましょう。 各関数は、前のセクションで作成した C# アプリケーションに追加できます。
Bingによって返される結果の数を制限する
このサンプルでは、 count
パラメーターと offset
パラメーターを使用して、"シアトルのベスト レストラン" に返される結果の数を制限します。 最初の結果の Name
と Url
が出力されます。
コンソール プロジェクトに次のコードを追加します。
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); } }
main
にWebResultsWithCountAndOffset
を追加します。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(); }
アプリケーションを実行します。
ニュースをフィルターする
このサンプルでは、 response_filter
パラメーターを使用して検索結果をフィルター処理します。 返される検索結果は、"Microsoft" のニュース記事に限定されます。 最初の結果の Name
と Url
が出力されます。
コンソール プロジェクトに次のコードを追加します。
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); } }
main
にWebResultsWithCountAndOffset
を追加します。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(); }
アプリケーションを実行します。
安全な検索、回答数、昇格フィルターを使用する
このサンプルでは、 answer_count
、 promote
、および safe_search
パラメーターを使用して、"ミュージック ビデオ" の検索結果をフィルター処理します。 最初の結果の Name
と ContentUrl
が表示されます。
コンソール プロジェクトに次のコードを追加します。
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); } }
main
にWebResultsWithCountAndOffset
を追加します。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(); }
アプリケーションを実行します。
リソースをクリーンアップする
このプロジェクトが完了したら、アプリケーションのコードからサブスクリプション キーを削除してください。
次のステップ
Bing Web Search クライアント ライブラリを使用すると、Bing Web Search を Java アプリケーションに簡単に統合できます。 このクイック スタートでは、要求の送信、JSON 応答の受信、結果のフィルター処理と解析を行う方法について説明します。
今すぐコードを表示しますか? Java 用の Bing Search クライアント ライブラリのサンプルは、GitHub で入手できます。
[前提条件]
このクイック スタートを実行する前に必要なものをいくつか次に示します。
- JDK 7 または 8
- Apache Maven またはお気に入りのビルド自動化ツール
- サブスクリプション キー
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Web Search API の使用を開始します。
- リソースを削除するまで、Azure portal から使用できます。
- Free 価格レベルを使用してサービスを試し、後で運用環境用の有料レベルにアップグレードします。
- リソースを削除するまで、Azure portal から使用できます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
プロジェクトを作成して POM ファイルを設定する
Maven またはお気に入りのビルド 自動化ツールを使用して、新しい Java プロジェクトを作成します。 Maven を使用していることを前提として、 プロジェクト オブジェクト モデル (POM) ファイルに次の行を追加します。
mainClass
のすべての箇所をお使いのアプリケーションに置き換えます。
<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>
依存関係を宣言する
お気に入りの IDE またはエディターでプロジェクトを開き、次の依存関係をインポートします。
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;
Maven を使用してプロジェクトを作成した場合、パッケージは既に宣言されている必要があります。 それ以外の場合は、ここでパッケージを宣言します。 例えば次が挙げられます。
package com.bingwebsearch.app
BingWebSearchSample クラスを宣言する
BingWebSearchSample
クラスを宣言します。
main
メソッドを含むほとんどのコードが含まれます。
public class BingWebSearchSample {
// The code in the following sections goes here.
}
要求を作成する
runSample
メソッドは、BingWebSearchSample
クラスに存在し、要求を構築します。 次のコードをアプリケーションにコピーします。
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...
応答の処理
次に、応答を解析して結果を出力するコードをいくつか追加しましょう。 応答オブジェクトに含めると、最初の Web ページ、画像、ニュース記事、ビデオの name
と url
が印刷されます。
/*
* 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...");
}
main メソッドを宣言する
このアプリケーションでは、main メソッドには、クライアントをインスタンス化し、 subscriptionKey
を検証し、 runSample
を呼び出すコードが含まれています。 続行する前に、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();
}
}
プログラムを実行する
最後の手順は、プログラムを実行することです。
mvn compile exec:java
リソースをクリーンアップする
このプロジェクトが完了したら、プログラムのコードからサブスクリプション キーを削除してください。
次のステップ
こちらも参照ください
Bing Web Search クライアント ライブラリを使用すると、Bing Web Search を Node.js アプリケーションに簡単に統合できます。 このクイック スタートでは、クライアントのインスタンス化、要求の送信、応答の出力を行う方法について説明します。
今すぐコードを表示しますか? JavaScript 用の Bing Search クライアント ライブラリのサンプルは、GitHub で入手できます。
[前提条件]
このクイック スタートを実行する前に必要なものをいくつか次に示します。
- Node.js 6 以降
- サブスクリプション キー
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Web Search API の使用を開始します。
- リソースを削除するまで、Azure portal から使用できます。
- Free 価格レベルを使用してサービスを試し、後で運用環境用の有料レベルにアップグレードします。
- リソースを削除するまで、Azure portal から使用できます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
開発環境を設定する
まず、Node.js プロジェクトの開発環境を設定します。
プロジェクトの新しいディレクトリを作成します。
mkdir YOUR_PROJECT
新しいパッケージ ファイルを作成します。
cd YOUR_PROJECT npm init
次に、いくつかの Azure モジュールをインストールし、
package.json
に追加してみましょう。npm install --save @azure/cognitiveservices-websearch npm install --save @azure/ms-rest-azure-js
プロジェクトを作成し、必要なモジュールを宣言する
package.json
と同じディレクトリに、お気に入りの IDE またはエディターを使用して新しい Node.js プロジェクトを作成します。 たとえば、 sample.js
と指定します。
次に、このコードをプロジェクトにコピーします。 前のセクションでインストールしたモジュールが読み込まれます。
const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
const WebSearchAPIClient = require('@azure/cognitiveservices-websearch');
クライアントをインスタンス化する
このコードは、クライアントをインスタンス化し、 @azure/cognitiveservices-websearch
モジュールを使用します。 続行する前に、Azure アカウントの有効なサブスクリプション キーを入力してください。
let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
let webSearchApiClient = new WebSearchAPIClient(credentials);
要求を行い、結果を出力する
クライアントを使用して、検索クエリをBing Web Searchに送信します。 応答に properties
配列内のいずれかの項目の結果が含まれている場合、 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;
})
プログラムを実行する
最後の手順は、プログラムを実行することです。
リソースをクリーンアップする
このプロジェクトが完了したら、プログラムのコードからサブスクリプション キーを削除してください。
次のステップ
こちらも参照ください
Bing Web Search クライアント ライブラリを使用すると、Bing Web Search を Python アプリケーションに簡単に統合できます。 このクイック スタートでは、要求の送信、JSON 応答の受信、結果のフィルター処理と解析を行う方法について説明します。
今すぐコードを表示しますか? Python 用の Bing Search クライアント ライブラリのサンプルは、GitHub で入手できます。
[前提条件]
Bing Web Search SDK は、Python 2.7 または 3.6 以降と互換性があります。 このクイックスタートでは、仮想環境を使用することをお勧めします。
- Python 2.7 または 3.6 以降
- python 2.7 用 virtualenv
- venv for Python 3.x
Azure リソースを作成する
次のいずれかの Azure リソースを作成して、Bing Web Search API の使用を開始します。
- リソースを削除するまで、Azure portal から使用できます。
- Free 価格レベルを使用してサービスを試し、後で運用環境用の有料レベルにアップグレードします。
- リソースを削除するまで、Azure portal から使用できます。
- 複数の Azure AI サービス全体で同じキーとエンドポイントをアプリケーションに使用します。
仮想環境を作成して構成する
仮想環境を設定して構成する手順は、Python 2.x と Python 3.x では異なります。 仮想環境を作成して初期化するには、次の手順に従います。
Python 2.x
virtualenv
for Python 2.7 を使用して仮想環境を作成します。
virtualenv mytestenv
環境をアクティブ化します。
cd mytestenv
source bin/activate
Bing Web Search SDK の依存関係をインストールします。
python -m pip install azure-cognitiveservices-search-websearch
Python 3.x
venv
for Python 3.x を使用して仮想環境を作成します。
python -m venv mytestenv
環境をアクティブ化します。
mytestenv\Scripts\activate.bat
Bing Web Search SDK の依存関係をインストールします。
cd mytestenv
python -m pip install azure-cognitiveservices-search-websearch
クライアントを作成し、最初の結果を出力する
仮想環境を設定し、依存関係をインストールしたので、クライアントを作成しましょう。 クライアントは、Bing Web Search API に対する要求と応答を処理します。
応答に Web ページ、画像、ニュース、またはビデオが含まれている場合は、それぞれの最初の結果が出力されます。
お気に入りの IDE またはエディターを使用して、新しい Python プロジェクトを作成します。
このサンプル コードをプロジェクトにコピーします。
endpoint
には、以下のグローバル エンドポイント、またはリソースの Azure portal に表示される カスタム サブドメイン エンドポイントを指定できます。# 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...")
SUBSCRIPTION_KEY
を有効なサブスクリプション キーに置き換えます。YOUR_ENDPOINT
をポータルのエンドポイント URL に置き換え、エンドポイントから "bing/v7.0" セクションを削除します。プログラムを実行します。 たとえば、
python your_program.py
と指定します。
関数を定義して結果をフィルター処理する
Bing Web Search API の最初の呼び出しを行ったので、いくつかの関数を見てみましょう。 次のセクションでは、クエリを絞り込んで結果をフィルター処理するための SDK 機能について説明します。 各関数は、前のセクションで作成した Python プログラムに追加できます。
Bingによって返される結果の数を制限する
このサンプルでは、 count
パラメーターと offset
パラメーターを使用して、SDK の search
メソッドを使用して返される結果の数を制限します。 最初の結果の name
と url
が出力されます。
次のコードを 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))
プログラムを実行します。
最新のニュースをフィルターで絞り込む
このサンプルでは、 response_filter
パラメーターと freshness
パラメーターを使用して、SDK の search
メソッドを使用して検索結果をフィルター処理します。 返される検索結果は、過去 24 時間以内に検出Bingニュース記事とページに限定されます。 最初の結果の name
と url
が出力されます。
次のコードを 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)
プログラムを実行します。
安全な検索、回答数、昇格フィルターを使用する
このサンプルでは、 answer_count
、 promote
、および safe_search
パラメーターを使用して、SDK の search
メソッドを使用して検索結果をフィルター処理します。 最初の結果の name
と url
が表示されます。
次のコードを 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))
プログラムを実行します。
リソースをクリーンアップする
このプロジェクトが完了したら、プログラムのコードからサブスクリプション キーを削除し、仮想環境を非アクティブ化してください。