Краткое руководство. Использование пакета SDK Поиска в Интернете Bing для PythonQuickstart: Use the Bing Web Search SDK for Python

Пакет SDK Поиска в Интернете Bing позволяет интегрировать поиск Bing в любое приложение Python.The Bing Web Search SDK makes it easy to integrate Bing Web Search into your Python application. В этом кратком руководстве описано, как отправлять запрос, получать ответ в формате JSON, фильтровать и анализировать результаты.In this quickstart, you'll learn how to send a request, receive a JSON response, and filter and parse the results.

Хотите увидеть код прямо сейчас?Want to see the code right now? Примеры для пакета SDK Bing для поиска в Интернете для Python доступны в GitHub.The Bing Web Search SDK for Python samples are available on GitHub.

Для этого краткого руководства требуется учетная запись API Azure Cognitive Services с API Поиска Bing.This quickstart requires an Azure Cognitive Services account with Bing Search APIs. Если у вас нет учетной записи, можно использовать бесплатную пробную версию, чтобы получить ключ подписки.If you don't have an account, you can use the free trial to get a subscription key.

См. также Цены на Cognitive Services. API-интерфейсы поиска Bing.See also Cognitive Services Pricing - Bing Search API.

Предварительные требованияPrerequisites

Пакет SDK Поиска в Интернете Bing совместим с Python версии 2.7, 3.3, 3.4, 3.5 и 3.6.The Bing Web Search SDK is compatible with Python 2.7, 3.3, 3.4, 3.5, and 3.6. Мы рекомендуем использовать для этого руководства виртуальное окружение.We recommend using a virtual environment for this quickstart.

  • Python версии 2.7, 3.3, 3.4, 3.5 или 3.6Python 2.7, 3.3, 3.4, 3.5 or 3.6
  • virtualenv для Python 2.7virtualenv for Python 2.7
  • venv для Python 3.xvenv for Python 3.x

Создание и настройка виртуального окруженияCreate and configure your virtual environment

Инструкции по установке и настройке виртуального окружения будут разными для версий Python 2.x и Python 3.x.The instructions to set up and configure a virtual environment are different for Python 2.x and Python 3.x. Выполните описанные ниже шаги, чтобы создать и инициализировать виртуальное окружение.Follow the steps below to create and initialize your virtual environment.

Python 2.xPython 2.x

Создайте виртуальное окружение с virtualenv для Python 2.7:Create a virtual environment with virtualenv for Python 2.7:

virtualenv mytestenv

Активируйте созданное окружение:Activate your environment:

cd mytestenv
source bin/activate

Установите зависимости пакета SDK Bing для поиска в Интернете:Install Bing Web Search SDK dependencies:

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

Python 3.xPython 3.x

Создайте виртуальное окружение с venv для Python 3.x:Create a virtual environment with venv for Python 3.x:

python -m venv mytestenv

Установите зависимости пакета SDK Bing для поиска в Интернете:Install Bing Web Search SDK dependencies:

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

Создание клиента и вывод первых результатовCreate a client and print your first results

Итак, вы настроили виртуальное окружение и установили зависимости. Теперь давайте создадим клиент.Now that you've set up your virtual environment and installed dependencies, let's create a client. Этот клиент будет обрабатывать запросы и ответы для API Поиска в Интернете Bing.The client will handle requests to and responses from the Bing Web Search API.

Если ответ содержит веб-страницы, изображения, новости или видео, будет выведен первый результат в каждой категории.If the response contains web pages, images, news, or videos, the first result for each is printed.

  1. Создайте проект Python, используя любую IDE или любой текстовый редактор.Create a new Python project using your favorite IDE or editor.

  2. Скопируйте в приложение следующий пример кода:Copy this sample code into your project:

    # Import required modules.
    from azure.cognitiveservices.search.websearch import WebSearchAPI
    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 = WebSearchAPI(CognitiveServicesCredentials(subscription_key), base_url = "YOUR_ENDPOINT")
    
    # 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. Замените значение SUBSCRIPTION_KEY действительным ключом подписки.Replace SUBSCRIPTION_KEY with a valid subscription key.

  4. Замените YOUR_ENDPOINT URL-адресом своей конечной точки на портале.Replace YOUR_ENDPOINT with your endpoint url in portal.

  5. Запустите программу.Run the program. Например, python your_program.py.For example: python your_program.py.

Определение функций и фильтрация результатовDefine functions and filter results

Теперь, когда вы выполнили первый вызов к API поиска в Интернете Bing, давайте изучим несколько функций.Now that you've made your first call to the Bing Web Search API, let's look at a few functions. В следующем разделе демонстрируются возможности пакета SDK по уточнению запросов и фильтрации результатов.The following sections highlight SDK functionality for refining queries and filtering results. Каждую из этих функций можно добавить в программу Python, созданную в предыдущем разделе.Each function can be added to the Python program you created in the previous section.

Ограничение числа результатов, возвращаемых BingLimit the number of results returned by Bing

В этом примере используются параметры count и offset, которые позволяют ограничить число результатов, возвращаемых методом search пакета SDK.This sample uses the count and offset parameters to limit the number of results returned using the SDK's search method. Для первого результата возвращаются name и url.The name and url for the first result are printed.

  1. Добавьте следующий код в проект Python:Add this code to your Python project:

     # 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. Запустите программу.Run the program.

Фильтрация по новостям и актуальностиFilter for news and freshness

В этом примере используются параметры response_filter и freshness для фильтрации результатов поиска в методе search пакета SDK.This sample uses the response_filter and freshness parameters to filter search results using the SDK's search method. Будут возвращаться только те результаты поиска, которые соответствуют новостям и страницам, обнаруженным Bing за последние 24 часа.The search results returned are limited to news articles and pages that Bing has discovered within the last 24 hours. Для первого результата возвращаются name и url.The name and url for the first result are printed.

  1. Добавьте следующий код в проект Python:Add this code to your Python project:

    # 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. Запустите программу.Run the program.

Использование безопасного поиска, счетчика ответов и фильтра повышения уровняUse safe search, answer count, and the promote filter

В этом примере используются параметры answer_count, promote и safe_search для фильтрации результатов поиска в методе search пакета SDK.This sample uses the answer_count, promote, and safe_search parameters to filter search results using the SDK's search method. Для первого результата возвращаются name и url.The name and url for the first result are displayed.

  1. Добавьте следующий код в проект Python:Add this code to your Python project:

    # 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. Запустите программу.Run the program.

Очистка ресурсовClean up resources

Удалите ключ подписки из кода программы и отключите виртуальное окружение, когда завершите работу с этим проектом.When you're done with this project, make sure to remove your subscription key from the program's code and to deactivate your virtual environment.

Дополнительная информацияNext steps

См. такжеSee also