API의 활용 - 02.Open API 활용하기 json data 추출하기
학습목표
- OPEN API 사용하여 데이터 획득하기
공공데이터 포털 OPEN API 사용하기
- 공공데이터 포털 회원가입/로그인(https://www.data.go.kr/)
- API 사용 요청 / 키 발급
- API 문서(specification) 확인
- API 테스트 및 개발
Endpoint 확인하기
- API가 서비스되는 서버의 IP 혹은 domain 주소
endpoint = 'http://api.visitkorea.or.kr/openapi/service/rest/EngService/areaCode?serviceKey={}&numOfRows=10&pageSize=10&pageNo=1&MobileOS=ETC&MobileApp=AppTest&_type=json'.format(serviceKey)
print(endpoint)
http://api.visitkorea.or.kr/openapi/service/rest/EngService/areaCode?serviceKey=M2yxe5P1l7PaBjxcmSe%2BCCgFE4vV07ECq2JX6rV%2Bjk3bCIsB5Lu0RSqu3vtay3Z4DOFHgXMHO%2B8aMruKq62V4A%3D%3D&numOfRows=10&pageSize=10&pageNo=1&MobileOS=ETC&MobileApp=AppTest&_type=json
key 값 확인하기
- 서비스 호출 트래킹할 목적이나 악의적인 사용을 금지할 목적으로 주로 사용
- 새로 발급받은 키는 1시간 이후 사용 가능
serviceKey = 'M2yxe5P1l7PaBjxcmSe%2BCCgFE4vV07ECq2JX6rV%2Bjk3bCIsB5Lu0RSqu3vtay3Z4DOFHgXMHO%2B8aMruKq62V4A%3D%3D'
Parameter 확인하기
- API 호출에 필요한 parameter 값 확인 및 구성
endpoint = 'http://api.visitkorea.or.kr/openapi/service/rest/EngService/areaCode?serviceKey={}&numOfRows=10&pageSize=10&pageNo={}&MobileOS=ETC&MobileApp=AppTest&_type=json'.format(serviceKey, 1)
resp = requests.get(endpoint)
print(resp.status_code)
print(resp.text)
data = resp.json()
print(data['response']['body']['items']['item'][0])
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-10-68468c21e9ec> in <module>
1 endpoint = 'http://api.visitkorea.or.kr/openapi/service/rest/EngService/areaCode?serviceKey={}&numOfRows=10&pageSize=10&pageNo={}&MobileOS=ETC&MobileApp=AppTest&_type=json'.format(serviceKey, 1)
----> 2 resp = requests.get(endpoint)
3
4 print(resp.status_code)
5 print(resp.text)
NameError: name 'requests' is not defined
요청 및 Response 확인
- requests 모듈을 활용하여 API 호출
- response 확인하여 원하는 정보 추출
- json 데이터의 경우, python dictionary로 변경하여 사용가능