재우니의 블로그

python - 2024년 국가공휴일 데이터 가져오기 (data.go.kr)

 

 

data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

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

 

Python/파이썬] 문자열을 숫자로 변환; 문자를 정수(int, long), 실수(float)로 바꾸기; String to Number

"123" 이렇게 따옴표에 들어 있는 숫자는, 문자열이지 숫자가 아닙니다. 이것을 123 이런 진짜 숫자로 만드는 방법입니다. 문자를, 진짜 숫자로 변환 예제 주의: 파이선 2.x 용 소스임 #!/usr/bin/python #

mwultong.blogspot.com

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

 

파이썬 날짜를 입력하면 요일을 알려주는 코드

연 월 일 을 기입하면 요일을 알려주는 코드를 짜는중입니다. 일단은 import datetime def print_whichday(year,month,date) r=['월요일','화요일','수요일','목요일','금요일','토요일','일요일'] aday=datetime.date(year,

hashcode.co.kr

freeharmony.tistory.com/64

 

[BeautifulSoup] Python 으로 xml 처리

Python에서 xml을 파싱하여 처리하는 간단한 방법을 소개합니다. 각종 사이트에서 전달되는 RSS(Rich Site Summary) 컨텐츠를 가지고 쉽게 재가공 하여 사용할 수 있도록 도와주는 외부 모듈입니다. 최

freeharmony.tistory.com