상세 컨텐츠

본문 제목

블로그 자동화 - Python 및 Bing News Search REST API를 사용하여 뉴스 검색 수행

IT/블로그 자동화

by 심장과영혼 2023. 2. 13. 21:41

본문

728x90
반응형

Python 및 Bing News Search REST API를 사용하여 뉴스 검색 수행

 
 

이 문서의 내용

  1. Azure 리소스 만들기
  2. 애플리케이션 만들기 및 초기화
  3. 요청에 대한 매개 변수 만들기
  4. 요청 보내기 및 응답 받기

 

이 빠른 시작을 사용하여 Bing News Search API에 대한 첫 번째 호출을 수행할 수 있습니다. 이 간단한 Python 애플리케이션은 검색 쿼리를 API에 보내고 JSON 결과를 처리합니다.

이 애플리케이션은 Python으로 작성되었지만, API는 대부분의 프로그래밍 언어와 호환되는 RESTful 웹 서비스입니다.

MyBinder에서 이 코드 샘플을 Jupyter Notebook으로 실행하려면 바인더 시작 배지를 선택합니다.

이 샘플의 소스 코드는 GitHub에서도 제공됩니다.

Azure 리소스 만들기

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

Bing Search v7 리소스

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

다중 서비스 리소스

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

애플리케이션 만들기 및 초기화

선호하는 IDE 또는 편집기에서 새 Python 파일을 만들고, 요청 모듈을 가져옵니다. 구독 키, 엔드포인트 및 검색어에 대한 변수를 만듭니다. 다음 코드에서 글로벌 엔드포인트를 사용하거나 리소스의 Azure Portal에 표시되는 사용자 지정 하위 도메인 엔드포인트를 사용할 수 있습니다.

Python복사
import requests

subscription_key = "your subscription key"
search_term = "Microsoft"
search_url = "https://api.cognitive.microsoft.com/bing/v7.0/news/search"

요청에 대한 매개 변수 만들기

키로 Ocp-Apim-Subscription-Key를 사용하여 구독 키를 새 사전에 추가합니다. 검색 매개 변수에 대해 동일한 작업을 수행합니다.

Python복사
headers = {"Ocp-Apim-Subscription-Key" : subscription_key}
params  = {"q": search_term, "textDecorations": True, "textFormat": "HTML"}

요청 보내기 및 응답 받기

  1. 요청 라이브러리를 사용하여 사용자의 구독 키 및 이전 단계에서 만든 사전 개체를 통해 Bing Visual Search API를 호출합니다.
    response = requests.get(search_url, headers=headers, params=params)
    response.raise_for_status()
    search_results = json.dumps(response.json())
    
  2. Python복사
  3. search_results에 JSON 개체로 저장된 API의 응답에 포함된 문서에 대한 설명에 액세스합니다.
    descriptions = [article["description"] for article in search_results["value"]]
    
  4. Python복사

결과 표시

이러한 설명은 굵게 강조 표시된 검색 키워드를 사용하여 테이블로 렌더링될 수 있습니다.

Python복사
from IPython.display import HTML
rows = "\n".join(["<tr><td>{0}</td></tr>".format(desc)
                  for desc in descriptions])
HTML("<table>"+rows+"</table>")

다음 단계

728x90
반응형

관련글 더보기