Crawling

[Python] 공공데이터 포털의 OPEN API 사용 방법(2)

wonhwa 2021. 10. 14. 17:17
반응형

[Python] 공공데이터 포털의 OPEN API 사용 방법의 2부 지금 시작하도록 하겠습니다.

저번에는 공공데이터 포털의 open API 신청 방법 및 파이썬 코드 확인방법까지 알아보았습니다.

오늘은 파이썬으로 어떻게 하면 open API를 사용해 데이터를 불러올 수 있는지 알아보도록 합시다.

 

step1. 공공데이터 포털 접속 API 확인
공공데이터 포털 사이트: https://www.data.go.kr

위의 사이트에 접속 후 로그인을 해 줍니다.

마이페이지 > 오픈API > 개발계정

접속 후 1부에서 신청한 전국CCTV 표준데이터를 클릭해줍니다.

여기서 확인을 클릭해 주고

미리보기를 클릭해주면,

위와 같이 미리보기 창이 뜹니다. 거기서 빨간색 박스 표시를 한 url을 복사해줍니다.

그러면 아래와 같이 url이 나타납니다.

http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=인증키&pageNo=1&numOfRows=100&type=xml

여기서 본인의 인증키를 입력하고 페이지시작(pageNo), 한번에 출력되는 행 갯수(numOfRows), json또는xml타입(type)을 원하는 대로 입력하면 됩니다.

이 url을 이용하여 파이썬으로 데이터를 불러와 보겠습니다.

저는 numOfRows = 10 , type =json 으로 설정하여 url을 사용하겠습니다.

http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=인증키&pageNo=1&numOfRows=10&type=json

 

step2. 라이브러리 import 및 url입력
# 라이브러리 import
import requests
import pprint
import json

# url 입력
url = 'http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=개인인증키입력&pageNo=1&numOfRows=10&type=json'

# url 불러오기
response = requests.get(url)

#데이터 값 출력해보기
contents = response.text

url을 불러오고 데이터 값을 출력해 보면

이렇게 출력이 됩니다. 한 눈에 보기 어려우니 예쁘게 출력해주는 pprint 라이브러리를 사용하여 출력해 봅시다.

# 데이터 결과값 예쁘게 출력해주는 코드
pp = pprint.PrettyPrinter(indent=4)
print(pp.pprint(contents))

그럼 위와 같이 예쁘게 출력이 됩니다.

step3. 문자열을 json으로 변경하기

여기서 위의 문자열을 json으로 변경해 줍시다.

#문자열을 json으로 변경
json_ob = json.loads(contents)
print(json_ob)
print(type(json_ob)) #json타입 확인

이제 json으로변경이 됐고 dict 타입임을 확인할 수 있습니다.

step4. 필요한 내용만 남기기

위를 보면 데이터의 내용에서 response 키 값의 body, body 속에 items 가 있고 우리가 원하는 정보가 거기 모두 들어있음을 확인할 수 있습니다. 이를 확인 후 아래와 같이 items내용만 꺼내보도록 합시다.

# 필요한 내용만 꺼내기
body = json_ob['response']['body']['items']
print(body)

그럼 이렇게 items의 내용만 출력이 됩니다.

step5. Dataframe으로 변환하기

이제 마지막 단계입니다. 위에서 작성한 body 변수에 저장된 내용을 pandas를 활용하여 Dataframe으로 만들어 줍니다.

# pandas import
import pandas as pd

# Dataframe으로 만들기
dataframe = pd.json_normalize(body)

print(dataframe)

그럼 이렇게 깔끔하게 DataFrame으로 저장된 것을 확인할 수 있습니다.

이것을 토대로 분석을 진행하시면 됩니다^o^

전체코드
#라이브러리 import
import requests
import pprint
import json

# url 입력

url = 'http://api.data.go.kr/openapi/tn_pubr_public_cctv_api?serviceKey=개인인증키입력&pageNo=1&numOfRows=10&type=json'

response = requests.get(url)

contents = response.text

# 데이터 결과값 예쁘게 출력해주는 코드
pp = pprint.PrettyPrinter(indent=4)
print(pp.pprint(contents))

## json을 DataFrame으로 변환하기 ##

#문자열을 json으로 변경
json_ob = json.loads(contents)
print(type(json_ob)) #json타입 확인

# 필요한 내용만 꺼내기
body = json_ob['response']['body']['items']
print(body)

# pandas import
import pandas as pd

# Dataframe으로 만들기
dataframe = pd.json_normalize(body)

print(dataframe)

 

마무리

1부에 이어 2부에서는 파이썬 코드로 어떻게 데이터를 불러오는지 알아보았습니다.

다른 자료들도 위의 방법을 적용하여 즐겁게 분석 하시길 바랍니다. ;-)

 

+10/14 json->dataframe으로 변환하는 코드 수정

반응형