앎을 경계하기

[가짜연구소3기] Data Engineer

[가짜연구소 3기] 데이터 엔지니어링 37 - Introduction to APIs

양갱맨 2021. 9. 4. 21:13

주제

Requests를 사용하여 웹사이트의 데이터를 추출하는 방법과 json으로 응답받아 데이터프레임으로 로드하는 방법을 배웠다.


Application Programming Interfaces(API)

흔히들 "API 문서 참고해라" 이런 말을 하는데, API가 정확히 무엇일까?

응용 프로그램 끼리 통신할 수 있도록 정의된 방법이다.

프로그래머가 API를 통해 응용프로그램에서 데이터를 가져올 수 있다.

Requests

파이썬에서 requests 라이브러리를 사용하여 모든 URL에서 데이터를 주고 받을 수 있다.

requests.get()으로 URL에서 데이터를 가져온다.

requests.get()

  • requests.get(url주소) 형태로 사용하며 유용한 파라미터를 사용할 수 있다.
  • params : 매개 변수 이름 및 값 dictionary를 전달하여 API 요청을 커스터마이징 할 수 있다.
  • headers : 이름과 값의 dictionary를 받고, 사용중인 API에 사용자 인증 키가 필요한 경우 헤더로 전달된다.
  • 반환값 : 데이터와 메타 데이터를 포함한 response 객체
    • 데이터만 받고 싶다면 response.json() 을 사용한다.

response.json()

  • dictionary 형태로 반환한다.
  • read_json()을 그냥 사용하면 딕셔너리 형태의 json 파일이 아니라서 에러가 발생한다. 따라서 pd.DataFrame() 을 사용하여 데이터프레임에 데이터를 로드해야한다.

예제를 위해 Yelp를 사용한다.

import requests
import pandas as pd

#응답 요청할 url
api_url = "https://api.yelp.com/v3/businesses/search"
# 파라미터
params = {"term" : "bookstore",
					"location" : "San Francisco"}
# 헤더 설정
header = {"Authorization": "Bearer {}".format(api_key)}

response = requests.get(api_url,
												params=params, 
												header=header)

data = response.json()
print(data)

bookstores = pd.DataFrame(data["businesses"])