Краткое руководство: использование клиентской библиотеки поиска новостей Bing

Предупреждение

30 октября 2020 г. API поиска Bing перемещены из служб ИИ Azure в службы поиска Bing. Эта документация предоставляется только для справки. Обновленную информацию см. в документации по API Поиска Bing. Инструкции по созданию ресурсов Azure для Поиска Bing приведены в статье Создание ресурса для Поиска Bing с помощью Azure Marketplace.

Используйте это краткое руководство, чтобы начать поиск новостей с клиентской библиотекой поиска новостей Bing для C#. Хотя поиск новостей Bing поддерживает REST API, совместимый с большинством языков программирования, клиентская библиотека предоставляет простой способ интеграции службы в приложения. Исходный код для этого шаблона можно найти на портале GitHub.

Предпосылки

  • Любой выпуск Visual Studio 2017 или более поздняя версия.

  • Платформа Json.NET, доступная в виде пакета NuGet.

  • Если вы используете Linux или MacOS, это приложение можно запустить с помощью Mono.

  • Пакет NuGet SDK для поиска новостей Bing . Установка этого пакета также устанавливает следующее:

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

Чтобы настроить консольное приложение с помощью клиентской библиотеки поиска новостей Bing, перейдите к Manage NuGet Packages параметру из обозревателя решений в Visual Studio. Добавьте пакет Microsoft.Azure.CognitiveServices.Search.NewsSearch.

Создание ресурса Azure

Начните использовать API поиска новостей Bing, создав один из следующих ресурсов Azure:

Ресурс Поиска Bing версии 7

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте бесплатный тарифный план, чтобы попробовать услугу, и перейдите на платный тариф для использования в работе.

Ресурс для нескольких служб

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте один и тот же ключ и конечную точку для приложений в нескольких службах ИИ Azure.

Создание и инициализация проекта

  1. Создайте новое консольное решение C# в Visual Studio. Затем добавьте следующий код в основной файл кода.

    using System;
    using System.Linq;
    using Microsoft.Azure.CognitiveServices.Search.NewsSearch;
    
  2. Создайте переменную для вашего ключа API и поискового термина, а затем создайте экземпляр клиента для поиска новостей с помощью них.

    var key = "YOUR-ACCESS-KEY";
    var searchTerm = "Quantum Computing";
    var client = new NewsSearchClient(new ApiKeyServiceClientCredentials(key));
    

Отправка запроса и анализ результата

  1. Используйте клиент для отправки запроса поиска в службу поиска новостей Bing:

    var newsResults = client.News.SearchAsync(query: searchTerm, market: "en-us", count: 10).Result;
    
  2. Если были возвращены какие-либо результаты, разберите их.

    if (newsResults.Value.Count > 0)
    {
        var firstNewsResult = newsResults.Value[0];
    
        Console.WriteLine($"TotalEstimatedMatches value: {newsResults.TotalEstimatedMatches}");
        Console.WriteLine($"News result count: {newsResults.Value.Count}");
        Console.WriteLine($"First news name: {firstNewsResult.Name}");
        Console.WriteLine($"First news url: {firstNewsResult.Url}");
        Console.WriteLine($"First news description: {firstNewsResult.Description}");
        Console.WriteLine($"First news published time: {firstNewsResult.DatePublished}");
        Console.WriteLine($"First news provider: {firstNewsResult.Provider[0].Name}");
    }
    
    else
    {
        Console.WriteLine("Couldn't find news results!");
    }
    Console.WriteLine("Enter any key to exit...");
    Console.ReadKey();
    

Дальнейшие действия

Используйте это краткое руководство, чтобы начать поиск новостей с клиентской библиотекой поиска новостей Bing для Java. Хотя поиск новостей Bing поддерживает REST API, совместимый с большинством языков программирования, клиентская библиотека предоставляет простой способ интеграции службы в приложения. Исходный код для этого шаблона можно найти на портале GitHub.

Предпосылки

Установите зависимости клиентской библиотеки поиска новостей Bing с помощью Maven, Gradle или другой системы управления зависимостями. Для файла Maven POM требуется следующее определение:

    <dependencies>
    <dependency>
        <groupId>com.microsoft.azure.cognitiveservices</groupId>
        <artifactId>azure-cognitiveservices-newssearch</artifactId>
        <version>0.0.1-beta-SNAPSHOT</version>
    </dependency>
    </dependencies>

Создание ресурса Azure

Начните использовать API поиска новостей Bing, создав один из следующих ресурсов Azure:

Ресурс Поиска Bing версии 7

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте бесплатный тарифный план, чтобы попробовать услугу, и перейдите на платный тариф для использования в работе.

Ресурс для нескольких служб

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте один и тот же ключ и конечную точку для приложений в нескольких службах ИИ Azure.

Создание и инициализация проекта

Создайте проект Java в любимой интегрированной среде разработки или редакторе и импортируйте следующие библиотеки.

import com.microsoft.azure.cognitiveservices.newssearch.*;
import com.microsoft.azure.cognitiveservices.newssearch.implementation.NewsInner;
import com.microsoft.azure.cognitiveservices.newssearch.implementation.NewsSearchAPIImpl;
import com.microsoft.azure.cognitiveservices.newssearch.implementation.TrendingTopicsInner;
import com.microsoft.rest.credentials.ServiceClientCredentials;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;

Создание клиента поиска и хранение учетных данных

  1. Создайте метод getClient(), который возвращает нового клиента поиска NewsSearchAPIImpl. Добавьте конечную точку в качестве первого параметра для новогоNewsSearchAPIImpl объекта и новый ServiceClientCredentials объект для хранения учетных данных.

    public static NewsSearchAPIImpl getClient(final String subscriptionKey) {
        return new NewsSearchAPIImpl("https://api.cognitive.microsoft.com/bing/v7.0/",
                new ServiceClientCredentials() {
                });
    }
    
  2. Чтобы создать ServiceClientCredentials объект, переопределите функцию applyCredentialsFilter() . OkHttpClient.Builder Передайте метод и используйте метод построителя addNetworkInterceptor() для создания учетных данных для вызова клиентской библиотеки.

    new ServiceClientCredentials() {
        @Override
        public void applyCredentialsFilter(OkHttpClient.Builder builder) {
            builder.addNetworkInterceptor(
                    new Interceptor() {
                        @Override
                        public Response intercept(Chain chain) throws IOException {
                            Request request = null;
                            Request original = chain.request();
                            // Request customization: add request headers.
                            Request.Builder requestBuilder = original.newBuilder()
                                    .addHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
                            request = requestBuilder.build();
                            return chain.proceed(request);
                        }
                    });
        }
    });
    

Отправка и получение поискового запроса

  1. Создайте метод, который вызывает getClient() и отправляет поисковый запрос в службу поиска новостей Bing. Отфильтруйте поиск по параметрам рынка и подсчета , а затем распечатайте сведения о первом результате новостей: имя, URL-адрес, дата публикации, описание, имя поставщика и общее количество предполагаемых совпадений для поиска.

    public static void newsSearch(String subscriptionKey)
    {
        NewsSearchAPIImpl client = getClient(subscriptionKey);
        String searchTerm = "Quantum Computing";
    
        NewsInner newsResults = client.searchs().list(searchTerm, null, null, null,
                null, null, 100, null, "en-us",
                null, null, null, null, null,
                null, null);
    
        if (newsResults.value().size() > 0)
        {
            NewsArticle firstNewsResult = newsResults.value().get(0);
    
            System.out.println(String.format("TotalEstimatedMatches value: %d", newsResults.totalEstimatedMatches()));
            System.out.println(String.format("News result count: %d", newsResults.value().size()));
            System.out.println(String.format("First news name: %s", firstNewsResult.name()));
            System.out.println(String.format("First news url: %s", firstNewsResult.url()));
            System.out.println(String.format("First news description: %s", firstNewsResult.description()));
            System.out.println(String.format("First news published time: %s", firstNewsResult.datePublished()));
            System.out.println(String.format("First news provider: %s", firstNewsResult.provider().get(0).name()));
        }
        else
        {
            System.out.println("Couldn't find news results!");
        }
    
    }
    
    
  2. Добавьте метод поиска в метод main() для выполнения этого кода.

    public static void main(String[] args) {
        String subscriptionKey = "YOUR-SUBSCRIPTION-KEY";
        NewsSearchSDK.newsSearch(subscriptionKey);
    }
    

Дальнейшие действия

Используйте это краткое руководство, чтобы начать поиск новостей с клиентской библиотекой поиска новостей Bing для JavaScript. Хотя поиск новостей Bing поддерживает REST API, совместимый с большинством языков программирования, клиентская библиотека предоставляет простой способ интеграции службы в приложения. Исходный код для этого шаблона можно найти на портале GitHub.

Предпосылки

  • Последняя версия Node.js.
  • Пакет SDK поиска новостей Bing для JavaScript
    • Чтобы установить его, выполните такую команду. npm install @azure/cognitiveservices-newssearch
  • Класс CognitiveServicesCredentials из пакета @azure/ms-rest-azure-js для проверки подлинности клиента.
    • Чтобы установить его, выполните такую команду. npm install @azure/ms-rest-azure-js

Создание ресурса Azure

Начните использовать API поиска новостей Bing, создав один из следующих ресурсов Azure:

Ресурс Поиска Bing версии 7

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте бесплатный тарифный план, чтобы попробовать услугу, и перейдите на платный тариф для использования в работе.

Ресурс для нескольких служб

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте один и тот же ключ и конечную точку для приложений в нескольких службах ИИ Azure.

Создание и инициализация приложения

  1. Создайте экземпляр объекта CognitiveServicesCredentials. Создайте переменные для ключа подписки и термина поиска.

    const CognitiveServicesCredentials = require('@azure/ms-rest-azure-js').CognitiveServicesCredentials;
    let credentials = new CognitiveServicesCredentials('YOUR-ACCESS-KEY');
    let search_term = 'Winter Olympics'
    
  2. Создайте экземпляр клиента:

    const NewsSearchAPIClient = require('@azure/cognitiveservices-newssearch');
    let client = new NewsSearchAPIClient(credentials);
    

Отправка поискового запроса

  1. Используйте клиент для поиска с помощью термина запроса в данном случае "Зимние Олимпийские игры":

    client.newsOperations.search(search_term).then((result) => {
        console.log(result.value);
    }).catch((err) => {
        throw err;
    });
    

Код выводит result.value элементы в консоль без анализа текста. Результаты, если таковые имеются для каждой категории, будут включать:

  • _type: 'NewsArticle'
  • _type: 'WebPage'
  • _type: 'VideoObject'
  • _type: 'ImageObject'

Дальнейшие действия

Используйте это краткое руководство, чтобы начать поиск новостей с клиентской библиотекой поиска новостей Bing для Python. Хотя поиск новостей Bing поддерживает REST API, совместимый с большинством языков программирования, клиентская библиотека предоставляет простой способ интеграции службы в приложения. Исходный код для этого шаблона можно найти на портале GitHub.

Предпосылки

Рекомендуется использовать виртуальную среду для разработки Python. Вы можете установить и инициализировать виртуальную среду с помощью модуля venv. Необходимо установить virtualenv для Python 2.7. Вы можете создать виртуальную среду с помощью:

python -m venv mytestenv

С помощью этой команды можно установить зависимости клиентской библиотеки поиска новостей Bing:

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

Создание ресурса Azure

Начните использовать API поиска новостей Bing, создав один из следующих ресурсов Azure:

Ресурс Поиска Bing версии 7

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте бесплатный тарифный план, чтобы попробовать услугу, и перейдите на платный тариф для использования в работе.

Ресурс для нескольких служб

  • Доступен на портале Azure до тех пор, пока вы не удалите ресурс.
  • Используйте один и тот же ключ и конечную точку для приложений в нескольких службах ИИ Azure.

Создание и инициализация приложения

  1. Создайте новый файл Python в любимой интегрированной среде разработки или редакторе и импортируйте следующие библиотеки. Создайте переменную для ключа подписки и условия поиска.

    from azure.cognitiveservices.search.newssearch import NewsSearchClient
    from msrest.authentication import CognitiveServicesCredentials
    subscription_key = "YOUR-SUBSCRIPTION-KEY"
    endpoint = "YOUR-ENDPOINT"
    search_term = "Quantum Computing"
    

Инициализация клиента и отправка запроса

  1. Создайте экземпляр CognitiveServicesCredentials.

    client = NewsSearchClient(endpoint=endpoint, credentials=CognitiveServicesCredentials(subscription_key))
    
  2. Отправьте поисковый запрос в API поиска новостей, сохраните ответ.

    news_result = client.news.search(query=search_term, market="en-us", count=10)
    

Анализ ответа

Если найдены результаты поиска, напечатать первый результат веб-страницы:

if news_result.value:
    first_news_result = news_result.value[0]
    print("Total estimated matches value: {}".format(
        news_result.total_estimated_matches))
    print("News result count: {}".format(len(news_result.value)))
    print("First news name: {}".format(first_news_result.name))
    print("First news url: {}".format(first_news_result.url))
    print("First news description: {}".format(first_news_result.description))
    print("First published time: {}".format(first_news_result.date_published))
    print("First news provider: {}".format(first_news_result.provider[0].name))
else:
    print("Didn't see any news result data..")

Дальнейшие действия