python - 2024년 국가공휴일 데이터 가져오기 (data.go.kr)
data.go.kr/
오퍼레이션 정보
일련번호 |
서비스명(국문) |
오퍼레이션명(영문) |
오퍼레이션명(국문) |
1 |
특일 정보제공 서비스 |
getHoliDeInfo |
국경일 정보조회 |
2 |
getRestDeInfo |
공휴일 정보조회 |
3 |
getAnniversaryInfo |
기념일 정보조회 |
4 |
get24DivisionsInfo |
24절기 정보조회 |
5 |
getSundryDayInfo |
잡절 정보조회 |
xml 형태
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<header>
<resultCode>00</resultCode>
<resultMsg>NORMAL SERVICE.</resultMsg>
</header>
<body>
<items>
<item>
<dateKind>01</dateKind>
<dateName>\xec\x8b\xa0\xec\xa0\x95</dateName>
<isHoliday>Y</isHoliday>
<locdate>20100101</locdate>
<seq>1</seq>
</item>
</items>
<numOfRows>10</numOfRows>
<pageNo>1</pageNo>
<totalCount>1</totalCount>
</body>
</response>'
파이썬 코딩
import requests
from urllib import parse
import pandas as pd
from bs4 import BeautifulSoup
from datetime import datetime
def print_whichday(locdate):
year = int(locdate[:4]) # 첫 4개 문자를 가져옵니다.
month = int(locdate[4:6]) # 5번째와 6번째 문자를 가져옵니다.
day = int(locdate[6:]) # 마지막 2개 문자를 가져옵니다.
r = ["월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"]
aday = datetime(year, month, day)
bday = aday.weekday()
return r[bday]
def getHoliday(year: int) -> pd.DataFrame:
url = (
"http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo"
)
api_key_utf8 = "키값"
api_key_decode = parse.unquote(api_key_utf8)
params = {"ServiceKey": api_key_decode, "solYear": year, "numOfRows": 100}
response = requests.get(url, params=params)
xml = BeautifulSoup(response.text, "lxml-xml")
items = xml.find("items")
item_list = []
if items is not None: # items가 None이 아닌 경우에만 반복문 실행
for item in items:
item_dict = {
"이름": item.find("dateName").text.strip(),
"날짜": datetime.strptime(item.find("locdate").text.strip(), "%Y%m%d"),
"요일": print_whichday(item.find("locdate").text.strip()),
}
item_list.append(item_dict)
return pd.DataFrame(item_list)
if __name__ == "__main__":
holiday_df = getHoliday(2024)
print(holiday_df)
2024 년 출력
PS C:\Users\lucks> & d:/Python/Python39/python.exe d:/source/pythonexam/birth.py
이름 날짜 요일
0 1월1일 2024-01-01 월요일
1 설날 2024-02-09 금요일
2 설날 2024-02-10 토요일
3 설날 2024-02-11 일요일
4 대체공휴일(설날) 2024-02-12 월요일
5 삼일절 2024-03-01 금요일
6 국회의원선거 2024-04-10 수요일
7 어린이날 2024-05-05 일요일
8 대체공휴일(어린이날) 2024-05-06 월요일
9 부처님오신날 2024-05-15 수요일
10 현충일 2024-06-06 목요일
11 광복절 2024-08-15 목요일
12 추석 2024-09-16 월요일
13 추석 2024-09-17 화요일
14 추석 2024-09-18 수요일
15 개천절 2024-10-03 목요일
16 한글날 2024-10-09 수요일
17 기독탄신일 2024-12-25 수요일
2024년 공휴일
이름 날짜 요일
0 1월1일 2024-01-01 월요일
1 설날 2024-02-09 금요일
2 설날 2024-02-10 토요일
3 설날 2024-02-11 일요일
4 대체공휴일(설날) 2024-02-12 월요일
5 삼일절 2024-03-01 금요일
6 국회의원선거 2024-04-10 수요일
7 어린이날 2024-05-05 일요일
8 대체공휴일(어린이날) 2024-05-06 월요일
9 부처님오신날 2024-05-15 수요일
10 현충일 2024-06-06 목요일
11 광복절 2024-08-15 목요일
12 추석 2024-09-16 월요일
13 추석 2024-09-17 화요일
14 추석 2024-09-18 수요일
15 개천절 2024-10-03 목요일
16 한글날 2024-10-09 수요일
17 기독탄신일 2024-12-25 수요일
참고 사이트
mwultong.blogspot.com/2007/01/python-int-long-float-string-to-number.html
hashcode.co.kr/questions/8174/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%82%A0%EC%A7%9C%EB%A5%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4-%EC%9A%94%EC%9D%BC%EC%9D%84-%EC%95%8C%EB%A0%A4%EC%A3%BC%EB%8A%94-%EC%BD%94%EB%93%9C
freeharmony.tistory.com/64