본문 바로가기

데이터과학/Python

공공데이터 오픈 API로 데이터 분석 [Python 3.x] 샘플코드

반응형

공공데이터 API 연동을 통해 데이터를 분석하려고 하는데, 

 

시작부터 막혀서 잘 안되는 경우가 있었습니다. 

 

다른거보다 많이 올라와 있는 샘플코드들이 Python 2.x인 경우가 많아서 업데이트가 필요해 보입니다. 

 

# Python 2.x 샘플 코드 #


from urllib2 import Request, urlopen
from urllib import urlencode, quote_plus

url = 'http://apis.data.go.kr/B552584/RfidFoodWasteServiceNew/getTotalTimeList'
queryParams = '?' + urlencode({ quote_plus('ServiceKey') : '서비스키', quote_plus('type') : 'xml', quote_plus('disYear') : '2020', quote_plus('disMonth') : '06', quote_plus('page') : '1', quote_plus('rowNum') : '10' })

request = Request(url + queryParams)
request.get_method = lambda: 'GET'
response_body = urlopen(request).read()
print response_body

 

공공데이터 포털 중에서 한국환경공단_음식물쓰레기 배출정보에 대한 샘플코드인데, 그래도 진행해보면 실행이 되지 않습니다. 

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

그래서 코드를 좀 정리할 필요가 있습니다. Python 3.x에 맞도록 수정해봤습니다. 

 

우선 requests는 install이 필요합니다. C://와 가상환경(venv)에 모두 설치되었는지 확인합니다. 

 

pip install requests

 

import requests as rq
import urllib.parse as parse

url = "http://apis.data.go.kr/B552584/RfidFoodWasteServiceNew/getTotalTimeList"
service_key = "서비스키"
queryParams = '?' + parse.urlencode({ parse.quote_plus('ServiceKey') : '서비스키',
                                      parse.quote_plus('type') : 'xml',
                                      parse.quote_plus('disYear') : '2020',
                                      parse.quote_plus('disMonth') : '06',
                                      parse.quote_plus('page') : '1',
                                      parse.quote_plus('rowNum') : '10' })

res = rq.get(url, queryParams)
print(res)

 

urllib와 urllib2는 urllib로 통합되었습니다. 

 

urlencode와 quote_plus는 urllib.parse에 포함되어 있습니다. 

 

공공데이터 API의 기본원리는 해당 url로 서비스키(encode) + 변수를 request하면 response로 특정 값이 전송되는 방식입니다. 

 

python에서 작동시켜면 

 

<Response [200]>이 오면 정상이고

 

[404]가 오면 error 입니다. 

 

반응형