API의 활용 - 02.Open API 활용하기 json data 추출하기

학습목표

  1. OPEN API 사용하여 데이터 획득하기

공공데이터 포털 OPEN API 사용하기

  1. 공공데이터 포털 회원가입/로그인(https://www.data.go.kr/)
  2. API 사용 요청 / 키 발급
  3. API 문서(specification) 확인
  4. 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로 변경하여 사용가능