Python获取中国节假日数据记录入JSON文件
项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能。那么问题是这些调休数据从哪里来呢?
开发盆友首先访问政府官网,查阅并记录下年度的节假日及调休安排,再录入数据库。作为追求效率与自动化的我(懒),并不认可这种“可爱”的方式。
我尝试一种更为智能的方法:Python获取中国节假日数据记录入JSON文件。
节假日数据获取
获取地址:https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/年份.json
requests请求即可
import requests
year = 2024
url = f'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json' # 网址
res = requests.get(url=url, timeout=10) # 发送请求
print(res.json())运行结果:

存入JSON文件
tinydb创建JSON文件,插入获取到的数据
from tinydb import TinyDB
if res.status_code == 200: # 校验是否返回数据
res_data = res.json()
y = res_data.get('year')
d = res_data.get('days')
p = res_data.get('papers')
with TinyDB(f'{year}.json') as db: # 创建/打开tinydb
db.truncate() # 清空数据
db.insert({'year': y, 'days': d, 'papers': p}) # 插入数据运行结果:

节假日数据读取
保存的节假日数据是以年份为名称的不同JSON文件,使用tinydb读取即可
import os
from tinydb import TinyDB
year = 2022
files = [files for root, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__)))] # 遍历当前文件夹
json_file_list = [os.path.splitext(f)[0] for f in files[0]] # 分割文件名
if str(year) in json_file_list: # 校验是否存在年份数据
with TinyDB(f"{year}.json") as db: # 打开tinydb
print(db.all()) # 获取所有数据
else:
print(f'{year}年数据不存在')运行结果:

封装完整代码
import os
import traceback
import requests
from tinydb import TinyDB
class ChineseHoliday:
"""
中国节假日获取
"""
@staticmethod
def download(year):
"""
获取并保存节假日json数据
获取地址来源:https://github.com/NateScarlet/holiday-cn
:return:
"""
try:
url = f'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json' # 网址
res = requests.get(url=url, timeout=10) # 发送请求
# print(res.json())
if res.status_code == 200: # 校验是否返回数据
y = res.json().get('year')
d = res.json().get('days')
p = res.json().get('papers')
with TinyDB(f'{year}.json') as db: # 创建/打开tinydb
db.truncate() # 清空数据
db.insert({'year': y, 'days': d, 'papers': p}) # 插入数据
except Exception as e:
info = f"出了点小问题!\n{repr(e)}\n{traceback.format_exc()}"
print(info)
@staticmethod
def get(year):
files = [files for root, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__)))] # 遍历当前文件夹
json_file_list = [os.path.splitext(f)[0] for f in files[0]] # 分割文件名
if str(year) in json_file_list: # 校验是否存在年份数据
with TinyDB(f"{year}.json") as db: # 打开tinydb
return db.all() # 获取所有数据
return到此这篇关于Python获取中国节假日数据记录入JSON文件的文章就介绍到这了,更多相关Python获取中国节假日数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python中if __name__ == ''__main__''作用解析
这篇文章主要介绍了Python中if __name__ == '__main__'作用解析,这断代码在Python中非常常见,它有作用?本文就解析了它的作用,需要的朋友可以参考下2015-06-06
python web 开发之Flask中间件与请求处理钩子的最佳实践
Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如身份验证、日志记录、数据预处理等功能,本文将详细介绍Flask的请求处理钩子、g对象以及中间件模式的使用方法和最佳实践,感兴趣的朋友一起看看吧2025-05-05
详解pyppeteer(python版puppeteer)基本使用
这篇文章主要介绍了详解pyppeteer(python版puppeteer)基本使用 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-06-06


最新评论