Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 파이썬
- 월패드
- matter
- 배당
- ConnectedHomeIP
- 홈네트워크
- 나스닥
- 국내주식
- 미국주식
- 힐스테이트 광교산
- Bestin
- Python
- Espressif
- raspberry pi
- homebridge
- 빅데이터분석기사
- RS-485
- 공모주
- cluster
- 애플
- 해외주식
- Home Assistant
- 주식
- Apple
- SK텔레콤
- MQTT
- 라즈베리파이
- 매터
- 현대통신
- esp32
Archives
- Today
- Total
YOGYUI
2024년 공휴일을 알아보자 (공공데이터포털 OpenAPI) 본문
반응형
2024년 공휴일 크롤링 (OpenAPI)
2024년 갑진년(甲辰年) 새해가 밝았다
올해도 어김없이 새해맞이 공휴일을 크롤링해보자
OpenAPI: 공공데이터포털의 "한국천문연구원_특일 정보"
아래와 같이 Python(파이썬) 스크립트 실행
※ API 키 획득 방법은 위의 링크 글 참고
import datetime
import requests
import pandas as pd
from bs4 import BeautifulSoup, element
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def getHolidayDataFrame(year: int) -> pd.DataFrame:
url = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo"
api_key_encoded = "Your key from data.go.kr"
api_key_decoded = requests.utils.unquote(api_key_encoded, encoding="utf-8")
params = {
"ServiceKey": api_key_decoded,
"solYear": year,
"numOfRows": 100
}
weekday_name = ["월", "화", "수", "목", "금", "토", "일"]
response = requests.get(url, params=params)
xml = BeautifulSoup(response.text, "lxml")
def parseItem(item: element.Tag) -> dict:
dt = datetime.datetime.strptime(item.find("locdate").text.strip(), '%Y%m%d')
item_dict = {
"이름": item.find("datename").text.strip(),
"날짜": dt,
"요일": weekday_name[dt.weekday()]
}
return item_dict
item_list = [parseItem(x) for x in xml.find("items")]
return pd.DataFrame(item_list)
if __name__ == "__main__":
df_holiday_2024 = getHolidayDataFrame(2024)
app = QApplication([])
app.setStyle('fusion')
table = QTableWidget()
table.setColumnCount(len(df_holiday_2024.columns))
table.setHorizontalHeaderLabels(df_holiday_2024.columns)
table.setRowCount(len(df_holiday_2024))
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
for row in range(table.rowCount()):
record = df_holiday_2024.iloc[row]
item = QTableWidgetItem(record['이름'])
table.setItem(row, 0, item)
item = QTableWidgetItem(record['날짜'].strftime('%Y-%m-%d'))
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter)
table.setItem(row, 1, item)
weekday = record['요일']
item = QTableWidgetItem(weekday)
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignHCenter)
if weekday in ['토', '일']:
item.setForeground(QBrush(Qt.red))
table.setItem(row, 2, item)
table.show()
app.exec()
[실행 결과]
In [1]: df_holiday_2024
Out[1]:
이름 날짜 요일
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 수
- 설날(2월 10일 토요일) 및 어린이날(5월 5일 일요일)에 대해 총 이틀의 대체공휴일 발생
- 4월 10일 국회의원 선거(총선) 이벤트
2024년은 총 18일의 공휴일이 예정되어 있다
주말(토, 일)을 제외한 공휴일을 카운트해보자
df_holiday_2024_weekday = df_holiday_2024[~df_holiday_2024['요일'].str.contains('토') & ~df_holiday_2024['요일'].str.contains('일')]
In [2]: len(df_holiday_2024_weekday)
Out[2]: 15
주중 공휴일은 종 15일 예정 (83.3%)
특히 추석은 월, 화, 수 휴일이라 연차를 조져주면 1주일 넘게 푹 쉴수 있다!
끝~!
반응형
'Software > Python' 카테고리의 다른 글
Python - 대한민국 공휴일 조회 어플리케이션 (PySide6) (3) | 2024.09.18 |
---|---|
2023년 공휴일을 알아보자 (공공데이터포털 OpenAPI) (0) | 2022.12.31 |
Python - 대출 이자 계산기 앱 개발 (1) | 2022.04.21 |
PyQt5 - QSpinBox 0x7FFFFFFFF 이상 최대값으로 설정하기 (0) | 2022.02.08 |
Python::typing::Literal - 변수값 범위 명시 (2) | 2022.01.24 |