본문 바로가기

Data Handling/Data Collecting

공공데이터포털 API - 대한민국 국경일 및 공휴일

순서

  1. key 받기

  2. url 준비

  3. requests를 사용하여 url로부터 정보 가져오기

  4. 상위/하위 등을 파악하기 쉽게 xmltodict로 파싱

  5. (xml 파일이라면 json으로 변환 - dumps) json을 파이썬으로 load

  6. 원하는 정보 지정해서 담기

 

 


 

 

0. 라이브러리 

import requests # url로부터 정보를 가져올때 사용
import xmltodict # orderedDict 형태로 변환 - 보기 쉽게
import json # xml을 json으로 json을 파이썬으로 변환

 

 

1. key 받기

홈페이지에서 발급 받으세요.

 

 

2. url 준비

해당 홈페이지에는 받고자 하는 데이터에 대해 설명하는 문서 파일이 첨부되어 있을 것입니다. 

문서파일에서 받고자 하는 url과 key를 합쳐 새로운 url을 만들어 주세요.

key = "미리 준비하세요"
url = "받고자 하는 데이터 url(문서 파일에 있습니다)" + key

 

 

3. requests를 사용하여 정보 가져오기

content = requests.get(url).content # 내가 제공해준 url로 들어가서 내용을 다 가져와!!

 

4. 상위/하위를 파악하기 쉽게 xmltodict로 파싱

파싱(parsing) : 문장이 이루고 있는 구성 성분을 분해후, 성분의 위계 관계를 분석하여 구조를 결정하는 것, 이용하기 쉬운 형태로 변환하는 것. 여기서는 xml을 dict형태로 변환(파싱)하는 것
content_parsed = xmltodict.parse(content)

 

5. (xml 파일이라면 json으로 변환 - dumps) json을 파이썬으로 load

# xml -> json
# 한글 깨짐 방지를 위해 ensure_ascii = False
jsonString = json.dumps(content_parsed['response']['body'], ensure_ascii = False)

# json -> python
jsonObj = json.loads(jsonString)

jsonString
jsonObj

 

6. 원하는 정보 지정해서 담기

holi_dict = jsonObj['items']['item']

date_list.append(holi_dict[i]['locdate']) # 날짜
name_list.append(holi_dict[i]['dateName']) # 이름

holi_dict

 

예시)

 

 


 

나같은 초보자들의 의문

1. XML은 뭐고 JSON은 뭐야?

2. 왜 XML은 JSON으로 바꿔준거야?!

그래서 찾아봤습니다.

 

 

1. 둘 다 데이터를 저장하고 전달하기 위한 언어라고 합니다.

오늘 제가 한 것처럼 데이터를 받아올때 xml이나 json파일 형식으로 받아졌던 이유이죠!!

 

2. json 구문이 xml 구문보다 짧아서 더 빨리 읽고 쓸 수 있다고 합니다. 

만약 데이터가 엄청나게 많다면 json 으로 변환시키고 처리해야할 필요성이 생기겠네요.

또한 xml과 달리 json은 배열을 사용할 수 있다고 합니다. 

이 말은 파이썬 사용에 있어 json 형식이 xml 형식보다 더 편할 것이다 정도로 들리네요.

 

 

 


 

 

공공데이터 포털에서 2018~2020년 대한민국 국경일 및 공휴일 API를 사용했습니다.

전체 코드는 아래 깃허브를 참고해주세요 :)

 

https://github.com/sanghwi-git/predict_SMP/blob/master/holiday%20using%20api.ipynb

 

sanghwi-git/predict_SMP

Contribute to sanghwi-git/predict_SMP development by creating an account on GitHub.

github.com