[파이썬 14] 정부 데이터 무제한 활용하기


기상, 인구, 상권, 대중교통 같은 데이터를 정부와 지자체가 API 형태로 무료 공개하고 있다. 대표적인 창구가 공공데이터포털(data.go.kr)이고, 서울시라면 서울열린데이터광장 같은 지자체별 플랫폼도 별도로 운영된다. 이런 오픈 API를 파이썬으로 호출하면 수작업 없이 최신 통계를 자동으로 받아올 수 있다.


1. 인증키 발급받기


공공데이터포털을 이용하려면 먼저 회원가입 후 원하는 데이터셋의 "오픈 API" 페이지에서 활용신청을 해야 한다.


승인이 나면 마이페이지에서 개인 인증키(서비스키)를 확인할 수 있는데, 이 키는 Encoding과 Decoding 두 가지 형태로 제공되며 API마다 어느 쪽이 정상 동작하는지 다를 수 있어 오류가 나면 다른 쪽으로 바꿔 시도해보는 것이 일반적으로 권장된다. 이 인증키는 외부에 노출되지 않도록 주의해야 한다는 점도 강조되는 부분이다.


2. API 호출 기본 구조


import requests


url = "https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst"

params = {

"serviceKey": "발급받은인증키",

"numOfRows": "10",

"pageNo": "1",

"dataType": "JSON",

"base_date": "20260704",

"base_time": "0500",

"nx": "60",

"ny": "127"

}


response = requests.get(url, params=params)

data = response.json()

print(data)


기상청 단기예보 API를 예로 들면, 발표일자(base_date)는 반드시 오늘 날짜에 맞춰 넣어야 데이터가 정상적으로 호출된다는 점을 유의해야 한다. 예보지점을 나타내는 좌표(nx, ny)는 지역마다 고유하게 정해져 있어서, API 문서에서 원하는 지역의 좌표를 미리 확인해야 한다.


3. JSON 응답 파싱하기


공공데이터 API는 대체로 JSON이나 XML 형식으로 응답을 준다. JSON으로 받으면 파이썬 딕셔너리처럼 다룰 수 있어서 이전 편에서 다룬 딕셔너리/리스트 문법을 그대로 활용해 필요한 값을 뽑아낼 수 있다.


items = data['response']['body']['items']['item']


for item in items:

print(item['category'], item['fcstValue'])


XML로 응답이 오는 API라면, 앞서 배운 BeautifulSoup으로 파싱해서 원하는 태그의 값을 추출하는 방식이 그대로 적용된다.


4. 페이지네이션, 대량 데이터 나눠서 가져오기


서울열린데이터광장 같은 곳은 한 번의 API 호출로 가져올 수 있는 데이터 건수에 제한이 있다는 안내가 명시되어 있으며(예: 최대 1,000건), 이보다 많은 데이터가 필요하면 요청을 나눠서 여러 번 호출해야 한다. 이런 경우 반복문으로 시작 번호와 끝 번호를 조금씩 늘려가며 호출을 반복하는 방식이 흔히 쓰인다.


start = 1

end = 1000

all_data = []


while start <= 5000:

url = f"http://openapi.seoul.go.kr:8088/인증키/json/서비스명/{start}/{end}"

response = requests.get(url)

result = response.json()

all_data.extend(result['row'])

start += 1000

end += 1000


5. 이렇게 모은 데이터, 이후 편들과 연결하기


API로 받아온 데이터를 리스트/딕셔너리 형태로 정리한 뒤에는, 앞서 배운 pandas로 DataFrame으로 변환해서 분석하거나, openpyxl/엑셀로 저장하는 흐름으로 자연스럽게 이어진다. 매일 자동으로 최신 공공데이터를 가져와 리포트를 만드는 자동화 파이프라인도 이런 조합으로 구성된다.


6. 정리


공공데이터 API는 인증키 발급, JSON/XML 응답 파싱, 대량 데이터의 페이지네이션 처리라는 세 가지 요소만 이해하면 대부분 비슷한 패턴으로 다룰 수 있다. 이렇게 가져온 데이터는 앞서 배운 pandas·엑셀 자동화와 연결해서 정기적인 통계 리포트 자동화로 이어가기 좋다.