빠른 시작: Python을 사용하여 Bing Web Search API 호출Quickstart: Use Python to call the Bing Web Search API

경고

Bing Search API는 Cognitive Services에서 Bing Search Services로 이동합니다.Bing Search APIs are moving from Cognitive Services to Bing Search Services. 2020년 10월 30일 부터 Bing Search의 모든 새 인스턴스는 여기에 설명된 프로세스에 따라 프로비저닝되어야 합니다.Starting October 30, 2020, any new instances of Bing Search need to be provisioned following the process documented here. Cognitive Services를 사용하여 프로비저닝된 Bing Search API는 향후 3년 동안 또는 기업계약이 종료될 때까지(둘 중 먼저 도래할 때까지) 지원됩니다.Bing Search APIs provisioned using Cognitive Services will be supported for the next three years or until the end of your Enterprise Agreement, whichever happens first. 마이그레이션 지침은 Bing Search Services를 참조하세요.For migration instructions, see Bing Search Services.

이 빠른 시작을 사용하여 Bing Web Search API에 대한 첫 번째 호출을 수행할 수 있습니다.Use this quickstart to make your first call to the Bing Web Search API. 이 Python 애플리케이션은 검색 요청을 API에 보내고 JSON 응답을 표시합니다.This Python application sends a search request to the API, and shows the JSON response. 이 애플리케이션은 Python으로 작성되었지만, API는 대부분의 프로그래밍 언어와 호환되는 RESTful 웹 서비스입니다.Although this application is written in Python, the API is a RESTful Web service compatible with most programming languages.

이 예제는 MyBinder에서 Jupyter 노트북으로 실행됩니다.This example is run as a Jupyter notebook on MyBinder. 실행하려면 바인더 배지 시작을 선택합니다.To run it, select the launch binder badge:

바인더Binder

사전 요구 사항Prerequisites

Azure 리소스 만들기Create an Azure resource

다음 Azure 리소스 중 하나를 만들어 Bing Web Search API 사용을 시작합니다.Start using the Bing Web Search API by creating one of the following Azure resources:

Bing Search v7 리소스Bing Search v7 resource

  • 리소스를 삭제할 때까지 Azure Portal을 통해 사용할 수 있습니다.Available through the Azure portal until you delete the resource.
  • 평가판 가격 책정 계층을 사용하여 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드합니다.Use the free pricing tier to try the service, and upgrade later to a paid tier for production.

다중 서비스 리소스Multi-service resource

  • 리소스를 삭제할 때까지 Azure Portal을 통해 사용할 수 있습니다.Available through the Azure portal until you delete the resource.
  • 여러 Cognitive Services에서 애플리케이션에 동일한 키와 엔드포인트를 사용합니다.Use the same key and endpoint for your applications, across multiple Cognitive Services.

변수 정의Define variables

  1. subscription_key 값을 Azure 계정의 유효한 구독 키로 바꿉니다.Replace the subscription_key value with a valid subscription key from your Azure account.

    subscription_key = "YOUR_ACCESS_KEY"
    assert subscription_key
    
  2. Bing Web Search API 엔드포인트를 선언합니다.Declare the Bing Web Search API endpoint. 다음 코드에서 글로벌 엔드포인트를 사용하거나 리소스의 Azure Portal에 표시되는 사용자 지정 하위 도메인 엔드포인트를 사용할 수 있습니다.You can use the global endpoint in the following code, or use the custom subdomain endpoint displayed in the Azure portal for your resource.

    search_url = "https://api.cognitive.microsoft.com/bing/v7.0/search"
    
  3. 필요에 따라 search_term의 값을 바꿔 검색 쿼리를 사용자 지정합니다.Optionally, customize the search query by replacing the value for search_term.

    search_term = "Azure Cognitive Services"
    

요청하기Make a request

이 코드에서는 requests 라이브러리를 사용하여 Bing Web Search API를 호출하고 결과를 JSON 개체로 반환합니다.This code uses the requests library to call the Bing Web Search API and return the results as a JSON object. API 키는 headers 사전에 전달되고, 검색 용어와 쿼리 매개 변수는 params 사전에 전달됩니다.The API key is passed in the headers dictionary, and the search term and query parameters are passed in the params dictionary.

옵션 및 매개 변수의 전체 목록은 Bing Web Search API v7을 참조하세요.For a complete list of options and parameters, see Bing Web Search API v7.

import requests

headers = {"Ocp-Apim-Subscription-Key": subscription_key}
params = {"q": search_term, "textDecorations": True, "textFormat": "HTML"}
response = requests.get(search_url, headers=headers, params=params)
response.raise_for_status()
search_results = response.json()

응답 형식 지정 및 표시Format and display the response

search_results 개체에는 검색 결과와 관련 쿼리 및 페이지와 같은 메타데이터가 포함됩니다.The search_results object includes the search results, and such metadata as related queries and pages. 이 코드는 IPython.display 라이브러리를 사용하여 응답 형식을 지정하고 브라우저에 해당 응답을 표시합니다.This code uses the IPython.display library to format and display the response in your browser.

from IPython.display import HTML

rows = "\n".join(["""<tr>
                       <td><a href=\"{0}\">{1}</a></td>
                       <td>{2}</td>
                     </tr>""".format(v["url"], v["name"], v["snippet"])
                  for v in search_results["webPages"]["value"]])
HTML("<table>{0}</table>".format(rows))

GitHub의 샘플 코드Sample code on GitHub

이 코드를 로컬로 실행하려면 GitHub에서 사용 가능한 전체 샘플을 참조하세요.To run this code locally, see the complete sample available on GitHub.

다음 단계Next steps

참고 항목See also