빠른 시작: Python을 사용하여 Bing Web Search API 호출

경고

2020년 10월 30일에 Bing Search API가 Cognitive Services에서 Bing Search Services로 이전되었습니다. 이 문서는 참조용으로만 제공됩니다. 업데이트된 문서는 Bing search API 문서를 참조하세요. Bing 검색을 위한 새 Azure 리소스 만들기에 대한 지침은 Azure Marketplace를 통해 Bing Search 리소스 만들기를 참조하세요.

이 빠른 시작을 사용하여 Bing Web Search API에 대한 첫 번째 호출을 수행할 수 있습니다. 이 Python 애플리케이션은 검색 요청을 API에 보내고 JSON 응답을 표시합니다. 이 애플리케이션은 Python으로 작성되었지만, API는 대부분의 프로그래밍 언어와 호환되는 RESTful 웹 서비스입니다.

이 예제는 MyBinder에서 Jupyter 노트북으로 실행됩니다. 실행하려면 바인더 배지 시작을 선택합니다.

바인더

사전 요구 사항

Azure 리소스 만들기

다음 Azure 리소스 중 하나를 만들어 Bing Web Search API 사용을 시작합니다.

Bing Search v7 리소스

  • 리소스를 삭제할 때까지 Azure Portal을 통해 사용할 수 있습니다.
  • 평가판 가격 책정 계층을 사용하여 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드합니다.

다중 서비스 리소스

  • 리소스를 삭제할 때까지 Azure Portal을 통해 사용할 수 있습니다.
  • 여러 Cognitive Services에서 애플리케이션에 동일한 키와 엔드포인트를 사용합니다.

변수 정의

  1. subscription_key 값을 Azure 계정의 유효한 구독 키로 바꿉니다.

    subscription_key = "YOUR_ACCESS_KEY"
    assert subscription_key
    
  2. Bing Web Search API 엔드포인트를 선언합니다. 다음 코드에서 글로벌 엔드포인트를 사용하거나 리소스의 Azure Portal에 표시되는 사용자 지정 하위 도메인 엔드포인트를 사용할 수 있습니다.

    search_url = "https://api.bing.microsoft.com/v7.0/search"
    
  3. 필요에 따라 search_term의 값을 바꿔 검색 쿼리를 사용자 지정합니다.

    search_term = "Azure Cognitive Services"
    

요청하기

이 코드에서는 requests 라이브러리를 사용하여 Bing Web Search API를 호출하고 결과를 JSON 개체로 반환합니다. API 키는 headers 사전에 전달되고, 검색 용어와 쿼리 매개 변수는 params 사전에 전달됩니다.

옵션 및 매개 변수의 전체 목록은 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()

응답 형식 지정 및 표시

search_results 개체에는 검색 결과와 관련 쿼리 및 페이지와 같은 메타데이터가 포함됩니다. 이 코드는 IPython.display 라이브러리를 사용하여 응답 형식을 지정하고 브라우저에 해당 응답을 표시합니다.

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의 샘플 코드

이 코드를 로컬로 실행하려면 GitHub에서 사용 가능한 전체 샘플을 참조하세요.

다음 단계

참고 항목