You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sportsreference获取NFL数据时遇TypeError错误求助

解决sportsreference库获取NFL数据时的TypeError错误

问题背景

在Google Colab中使用sportsreference和pandas抓取过去25年NFL比赛技术统计(boxscores)并导出CSV时,出现如下错误:

unsupported operand type(s) for +=: 'datetime.date' and 'int'

报错原因

查看报错栈可知,Boxscores类的内部方法_find_games尝试对week变量执行week +=1操作,但该变量被传入了datetime.date类型的值(原代码中传的是日期范围),而该方法实际期望接收整数类型的周数或年份,不支持直接传入日期对象作为参数。

修复后的完整代码

首先安装依赖库:

!pip install sportsreference

修改后的抓取代码:

from sportsreference.nfl.boxscore import Boxscores
import pandas as pd
import datetime

# 计算起始年份(当前年份往前推25年)
current_year = datetime.datetime.now().year
start_year = current_year - 25

# 初始化存储所有赛季数据的列表
all_games_stats = []

# 遍历每个赛季
for year in range(start_year, current_year + 1):
    print(f"正在抓取{year}赛季数据...")
    try:
        # 直接传入赛季年份获取该赛季所有比赛,NFL赛季跨年度,起始年份即为赛季标识
        season_games = Boxscores(year)
        
        # 检查是否获取到比赛数据
        if season_games.games:
            print(f"{year}赛季数据抓取成功")
            # 遍历每周的比赛
            for week, week_games in season_games.games.items():
                for game in week_games:
                    # 提取单场比赛的技术统计
                    game_data = game['boxscore']
                    all_games_stats.append(pd.DataFrame([game_data]))
        else:
            print(f"{year}赛季未找到比赛数据")
            
    except Exception as e:
        print(f"{year}赛季抓取失败:{e}")

# 合并所有数据并导出CSV
if all_games_stats:
    nfl_games_stats_df = pd.concat(all_games_stats, ignore_index=True)
    print("数据预览:")
    print(nfl_games_stats_df.head())
    nfl_games_stats_df.to_csv('nfl_games_stats_past_25_years.csv', index=False)
    print("数据已导出为nfl_games_stats_past_25_years.csv")
else:
    print("未抓取到任何数据,请检查逻辑")

代码修改说明

  1. 移除日期对象构造:不再使用datetime.date生成赛季起止日期,直接将赛季年份传入Boxscores(year),这是库支持的正确调用方式
  2. 简化遍历逻辑:season_games.games是按周为键的字典,用items()直接遍历周数和对应比赛列表,代码更简洁
  3. 保留错误处理:保留try-except块,避免单个赛季抓取失败导致整个程序中断

内容的提问来源于stack exchange,提问作者WarSaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 02:59:58