본문 바로가기

Codestates AI 부트캠프/4. Data Engineering

[데이터 엔지니어링] 2-3. API

1. API

Application Programming Interface. 프로그램들이 소통할 수 있는 인터페이스. 

앞서서 RDB를 배울 때 DB API를 배운 적이 있다. 파이썬과 DB를 연결할 때 썼던 인터페이스다. 이를 이용해 DB에서 데이터를 가져오고 DB에 데이터를 넣을 수도 있었다.

API도 이처럼 다른 프로그램 또는 서버와 내 파이썬 코드를 연결하는 것이다. 이번에 배우는 API는 날씨 API로, 내 파이썬 코드로 원하는 지역의 원하는 날씨 정보를 가져올 수 있다. 데이터를 가져올 때 JSON 형식일 가능성이 높다.

a. JSON

Javascript Object Notation. 표기 방식은 파이썬 자료 형식 중 Dictionary와 비슷하게 key-value 값으로 묶여있다. Dictionary처럼 자료를 뽑아내면 된다.

2. 과정

① 원하는 웹 또는 서버에서 API KEY 확보
이 부분은 서비스마다 방식이 다르니 스킵

② API_KEY를 합친 API URI를 이용해 source를 받아온다

 

import requests
import json

API_KEY = '자기만의 키'

city_name = 'London' #원하는 도시 이름

# 원하는 도시의 현재 날씨를 가져오는 API URI
url = f' http://api.openweathermap.org/data/2.5/weather?q= {city_name}&appid={API_KEY}&units=metric'

# source 받아오기
source = requests.get(url)

# 받아온 source를 json 데이터로 변환
current_weather = json.loads(source.text)


③ 원하는 데이터 추려 정리하기

 

# 날씨 묘사(?) 가져오기
weather_description = json_data['weather'][0]['description']
#>>>'날씨 맑음'

# 온도 가져오기
temp_min = json_data['main']['temp_min']
#>>>26


* 아래와 같은 방식으로 param을 지정해 uri를 만들 수도 있다

 

# data.or.kr에서 국립암센터 정보 가져오기

url = 'http://apis.data.go.kr/B551172/Pancreatic14/dtlExamByType'

params = {
    'serviceKey': API_KEY,
    'type': 'xml, json',
    'pageNo': '3999',
    'numOfRows': '1',
    'centerNm': '국립암센터',
    'fromYear': '2010',
    'toYear': '2019'
}

source = requests.get(url, params=params)
json_data = json.loads(source.text) #JSON 데이터로 변환