如何基于法甲赛事日期自动触发Python数据采集代码?
问题
我正在收集数据以训练分类算法,希望能在有法甲赛事的日期自动运行数据采集代码。目前的数据采集代码如下:
PerfsL1 = pd.read_html('https://fbref.com/fr/comps/13/stats/Statistiques-Ligue-1#all_stats_standard', header=1)[0] PerfsL1.to_csv("PerfsL1.csv")
我已经获取了法甲赛事日历数据,处理代码和输出示例如下:
日历处理代码
# INPUT CalL1 = pd.read_html('https://fbref.com/fr/comps/13/calendrier/Scores-et-tableaux-Ligue-1') CalL1 = CalL1[0] CalL1.drop(['Attendance', 'Referee', 'Rapport de match', 'Notes'], axis=1, inplace=True) CalL1.to_csv('Calendrier_Hisotrique_L1_Saison_2022/2023.csv') # 修正原代码变量名与文件名拼写错误
日历数据输出示例
Wk Day Date Time Domicile xG Score xG.1 0 1.0 Ven 2022-08-05 21:00 Lyon 1.5 2–1 1.2 1 1.0 Sam 2022-08-06 17:00 Strasbourg 1.2 1–2 3.2 2 1.0 Sam 2022-08-06 21:00 Clermont Foot 0.3 0–5 2.6 3 1.0 Dim 2022-08-07 13:00 Toulouse 1.2 1–1 1.0 4 1.0 Dim 2022-08-07 15:00 Lille 1.8 4–1 0.9 .. ... ... ... ... ... ... ... ... 414 38.0 Sam 2023-06-03 NaN Ajaccio NaN NaN NaN
请问是否可以实现当日期与赛事日期匹配时,自动运行上述数据采集代码?
解决方案
完全可以实现,以下是两种可靠的落地思路:
方法一:用Python schedule库定时检查日期
适合本地长期后台运行脚本,每天固定时间检查当天是否有赛事,触发采集逻辑。
完整代码示例
import pandas as pd import schedule import time from datetime import date def collect_l1_data(): """执行法甲数据采集并保存""" PerfsL1 = pd.read_html('https://fbref.com/fr/comps/13/stats/Statistiques-Ligue-1#all_stats_standard', header=1)[0] PerfsL1.to_csv("PerfsL1.csv", index=False) print(f"数据已更新:{date.today()}") def check_and_run(): """检查当天是否有赛事,有则执行采集""" try: # 读取预处理后的日历数据 cal_df = pd.read_csv('Calendrier_Hisotrique_L1_Saison_2022/2023.csv') # 转换日期格式为统一的date类型 cal_df['Date'] = pd.to_datetime(cal_df['Date']).dt.date today = date.today() # 判断当天是否存在赛事记录 if today in cal_df['Date'].values: collect_l1_data() else: print(f"{today} 无赛事,跳过采集") except Exception as e: print(f"检查或执行出错:{str(e)}") # 设置每天22:00执行检查(赛事多在当日结束后,此时采集数据更完整) schedule.every().day.at("22:00").do(check_and_run) # 保持脚本持续运行 while True: schedule.run_pending() time.sleep(3600) # 每小时检查一次任务队列
关键注意点
- 提前修正原日历代码的拼写错误:将
ClL1改为CalL1,文件名添加.csv后缀,避免读取失败 - 可根据赛事结束时间调整检查点,比如若有晚场赛事,可延后至23:00执行
- 若赛事日历有更新,可将日历爬取逻辑也加入定时任务,定期同步最新赛程
方法二:系统级定时任务(Cron/任务计划程序)+ 日期判断
适合不需要脚本长期后台运行的场景,利用系统自带定时工具触发脚本,脚本内部完成日期校验。
操作步骤
- 编写独立的判断采集脚本(如
auto_collect_l1.py),内容与方法一中的check_and_run、collect_l1_data函数一致 - 设置系统定时任务:
- Linux/macOS:执行
crontab -e添加规则,每天22:00运行脚本:0 22 * * * /usr/bin/python3 /你的脚本路径/auto_collect_l1.py - Windows:打开「任务计划程序」,创建每日22:00触发的任务,指定执行该Python脚本
- Linux/macOS:执行
额外优化建议
- 加入数据增量更新逻辑,避免每次覆盖全量数据,提升效率
- 对日历数据做去重处理,消除重复日期的干扰
- 添加日志记录功能,方便排查运行异常
内容的提问来源于stack exchange,提问作者JoJoWasACode
相关产品推荐
相关产品推荐

