10 分钟上手免费足球数据获取:Understat Python 包异步爬取 xG 全指南
10 分钟上手免费足球数据获取Understat Python 包异步爬取 xG 全指南【免费下载链接】understatAn asynchronous Python package for https://understat.com/.项目地址: https://gitcode.com/gh_mirrors/un/understat做足球数据分析最头疼的往往不是算法而是数据从哪来。本文的主角——Understat Python 包正是一个专注于足球数据获取的免费开源工具它用异步方式抓取 understat.com 上的 xG、PPDA 等专业指标安装到跑通第一个查询只需几分钟。如果你正为免费足球数据 API发愁这篇实战指南会把从零到能用的每一步都讲清楚。先弄清一个问题xG 数据为什么这么难拿假设你想评估西甲某支球队本赛季的进攻质量比如他们创造机会的能力到底强不强。摆在面前的无非三条路打开数据网站手动翻表把 JS 动态渲染的表格一条条复制出来一场比赛的数据就要折腾十几分钟自己写爬虫应付动态加载、请求头、JSON 提取半天起步还随时可能因页面改版而报废购买商业数据接口年费动辄数万美元个人玩家和中小团队根本吃不消。更麻烦的是真正有价值的信息——xG预期进球、xA预期助攻、xGChain 这类看不见的指标普通页面展示得十分有限。问题于是变成有没有一条轻量路径跳过抓取工程直接拿到干净的结构化数据这正是 Understat 包存在的理由。Understat 包是什么一个类覆盖四大数据层级这个项目把 understat.com 背后的数据接口全部翻译成了 Python 方法核心只有一个Understat类。它的构造参数只有一个aiohttp.ClientSession也就是说所有请求共享同一个会话、复用底层连接——这正是异步爬取足球数据效率高的原因。整个包的代码规模小得惊人核心逻辑集中在understat/understat.py和understat/utils.py两个文件里却提供了约 17 个方法大致覆盖四个层级数据层级典型方法能拿到什么联赛get_league_players、get_league_results、get_league_table整季球员榜、赛果、积分榜球队get_team_results、get_team_players、get_team_stats单队战绩、队内球员、赛季统计球员get_player_shots、get_player_matches逐次射门、逐场表现单场比赛get_match_shots、get_match_players一场比赛的全部射门与出场名单返回数据全是 Python 原生的dict和list拿到手就能直接丢进 pandas 继续分析省去了繁琐的解析环节。两分钟装好免费足球数据包pip 或源码二选一环境要求很低Python 3.6 以上即可。最省事的方式是 pip 一条命令依赖如 aiohttp会自动装好pip install understat想从源码开始折腾也可以先克隆仓库再本地安装git clone https://gitcode.com/gh_mirrors/un/understat cd understat pip install .装完别急着写代码先跑一遍项目自带的测试确认环境没问题pytest tests/测试全部通过说明包与当前环境兼容良好可以进入正题了。官方 API 说明放在 docs/classes/understat.rst遇到拿不准的方法随时查。第一次异步爬取生成西甲射手榜只需十行代码下面这段代码要解决的问题很具体快速拿到西甲一个赛季里创造机会最多的球员榜单。注意不是按进球数而是按 xG 排序——这正是 xG 数据分析的常见入门操作。import asyncio import aiohttp from understat import Understat async def build_scorer_board(): # 同一个会话内复用连接这是异步提速的关键 async with aiohttp.ClientSession() as session: client Understat(session) # 拉取西甲 2023 赛季全部球员的赛季数据 squad await client.get_league_players(la_liga, 2023) # 注意接口返回的数字大多是字符串先转成浮点数再排序 ranked sorted(squad, keylambda p: float(p[xG]), reverseTrue) for i, p in enumerate(ranked[:10], 1): print(f{i}. {p[player_name]}{p[team_title]} f进球 {p[goals]}xG {round(float(p[xG]), 2)}) asyncio.run(build_scorer_board())执行后控制台会依次打印出 xG 排名前十的球员。每条记录里除了goals、xG还有xA、assists、shots、key_passes、npg非点球进球、npxG非点球 xG、xGChain、xGBuildup等二十多个字段一次请求就把球员的进攻全貌带回来了。顺带一提联赛参数用的是缩写epl、la_liga、bundesliga、serie_a、ligue_1、rfpl六大主流联赛都在支持范围内。精准取数过滤参数与数据类型的两个细节抓回来的是一整个联赛的球员但很多时候你只关心某一支球队。不用在内存里慢慢筛方法本身就支持过滤async def scout_one_team(team_name): async with aiohttp.ClientSession() as session: client Understat(session) # 只保留指定球队的球员等价于网页表格里的筛选 members await client.get_league_players( la_liga, 2023, team_titleteam_name) return members过滤条件既可以写成team_titleteam_name这种关键字参数也可以打包成一个字典传进options参数两者效果一样。get_teams、get_team_results、get_player_shots等方法都遵循这套约定。这里要提醒新手两点数值字段多是字符串。goals: 11里的 11 是字符串做运算前先float()转换上面的排序代码就吃了这个亏才写对。嵌套结构要心里有数。比如比赛记录里主客队是h、a两个字典xG 也是{h: ..., a: ...}的结构取数时别搞混。高级指标一步到位读积分榜直接拿到 PPDA很多分析师关注 PPDA每次防守动作的传球次数——数值越低说明球队前场逼抢越凶。这个指标通常要自己从海量事件里计算但在这里只需要一次调用async def print_standings(): async with aiohttp.ClientSession() as session: client Understat(session) # 一行调用直接返回带表头的联赛积分榜 table await client.get_league_table(la_liga, 2023) for row in table: print(row)返回的是一张二维列表第一行是表头后面每行对应一支球队除了常规的胜平负、积分、进球数还直接附带了xG、NPxG、xGA、PPDA、OPPDA、DC深入进攻三区次数、xPTS预期积分等高级指标。用这张表就能做很有意思的对比找两支积分相近的球队比较它们的 PPDA你会发现防得凶和防得住完全是两回事。想看某一时间段的排名还能传start_date和end_date格式YYYY-MM-DD按日期区间重新计算积分榜。从宏观到微观拆解单场比赛的每一次射门联赛数据是宏观视角想研究一场具体比赛的对攻细节可以切换到单场维度。下面这段代码会打印出某场比赛的全部射门记录按主客队分组并带上每次射门的 xG 值async def dissect_match(match_id): async with aiohttp.ClientSession() as session: client Understat(session) # 返回该场比赛的全部射门记录按主客队分组 shots await client.get_match_shots(match_id) for side in (h, a): print(f--- {side} 队射门 ---) for s in shots[side]: print(s[minute], s[player], s[result], round(float(s[xG]), 3))每条射门记录还带situation定位球/运动战、shotType左脚/右脚/头球、射门坐标X/Y等字段。如果你对某位球员特别感兴趣get_player_shots(球员ID)能拉出他职业生涯的每一次射门配合get_player_grouped_stats还能按赛季、位置、射门区域分组查看统计做球员评估的素材基本齐了。多赛季并发拉取与工具化打磨单一赛季的数据往往不够做 xG 数据分析常常需要连续几个赛季做纵向对比。借助asyncio.gather可以同时发起多个请求把耗时几乎压缩到单次请求的水平import asyncio import aiohttp from understat import Understat async def fetch_season(client, season): data await client.get_league_players(la_liga, season) return season, data async def collect_multi_season(): async with aiohttp.ClientSession() as session: client Understat(session) # 三个赛季的请求同时发出总耗时约等于最慢的那一个 tasks [fetch_season(client, s) for s in (2021, 2022, 2023)] for season, data in await asyncio.gather(*tasks): print(season, 共抓取, len(data), 名球员) asyncio.run(collect_multi_season())跑正式项目前还可以做两件小事让脚本更耐用加一层简单缓存同一赛季的数据没必要反复抓把结果存成本地 JSON下次命中缓存直接读取控制节奏给请求加上超时设置遇到网络波动时捕获异常并重试而不是让整个脚本崩掉。记住你用的是别人的免费服务别用极端频率的循环去轰炸服务器礼貌地取数才能用得长久。结尾合规使用与你的下一步最后把话说明白这个包是社区爱好者为方便数据获取而写的开源项目与 understat.com 没有官方合作关系。使用时请尊重网站的条款与负载控制请求频率也不要把数据用于商业牟利。到这里你已经掌握了完整的取数链路装包、跑通首个查询、按条件过滤、读取含 PPDA 的高级积分榜、拆解单场射门、并发拉取多赛季数据。接下来建议你回到 tests/test_understat.py 看看项目自带的测试用例那里覆盖了每个方法的典型用法是最好的学习范本。从一行射手榜查询开始再到搭建你自己的 xG 分析脚本这套免费足球数据 API 能带你走很远。现在就去跑第一段代码吧十分钟后你就拥有自己的专业级足球数据库了。【免费下载链接】understatAn asynchronous Python package for https://understat.com/.项目地址: https://gitcode.com/gh_mirrors/un/understat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

LNA/PA/混频器中文仿真教程合集|Cadence射频电路设计实战PDF(含库文件+结果截图)

LNA/PA/混频器中文仿真教程合集|Cadence射频电路设计实战PDF(含库文件+结果截图)

温馨提示:文末有联系方式 一、为什么选择这套射频核心模块中文仿真教程 本系列教程专为射频工程师及微电子专业学习者打造,覆盖低噪声放大器(LNA)、功率放大器(PA)与混频器(Mixer)三…

2026/8/20 0:24:53 阅读更多 →
IGBT在口罩生产线中的核心应用与实战维护指南

IGBT在口罩生产线中的核心应用与实战维护指南

1. 从口罩机到IGBT:一场被忽略的“心脏”革命 去年帮朋友调试一台老旧的口罩机,故障现象是超声波焊头时好时坏,温度总是不稳定。折腾了半天,最后发现不是焊头本身的问题,而是驱动它的那个“黑盒子”——一个巴掌大的IG…

2026/8/21 3:55:31 阅读更多 →
零基础学网络安全千万别踩的5个学习误区​

零基础学网络安全千万别踩的5个学习误区​

零基础学网络安全千万别踩的 5 个学习误区​ 网络安全学习误区 刚入门网络安全的你,是不是总觉得 “明明学了很多,却还是啥也不会”?别急,不是你不够努力,可能是踩了这些 “隐形大坑”。 今天就来盘点零基础经常会遇…

2026/8/20 0:22:53 阅读更多 →

最新新闻

FastAPI快速构建LLM应用:从环境配置到生产部署实战指南

FastAPI快速构建LLM应用:从环境配置到生产部署实战指南

1. 先搞清楚 FastAPI 和 LLM 项目到底能解决什么问题如果你正在找一个能快速把想法变成 API 服务,并且想用它来对接大语言模型(LLM)做点实际应用,那 FastAPI 几乎是目前 Python 领域最直接的选择。它不是一个需要花几个月去学的重…

2026/8/21 8:54:46 阅读更多 →
WordPress插件开发实战:从零构建Airbnb式短租平台

WordPress插件开发实战:从零构建Airbnb式短租平台

在 WordPress 上构建一个类似 Airbnb 的短租平台,听起来像是一个庞大的工程,但借助 WordPress 强大的插件生态和内容管理能力,这并非遥不可及。许多开发者都曾尝试将复杂的业务逻辑集成到 WordPress 中,但往往卡在如何将房源管理、…

2026/8/21 8:54:46 阅读更多 →
MHmarkets:从公开信息出发 复盘技术架构与产品理解成本

MHmarkets:从公开信息出发 复盘技术架构与产品理解成本

对新手与注重稳健体验的外汇内容读者而言,“能看懂”往往比“堆概念”更重要。围绕MHmarkets,以下重点写清解释是否通俗、规则是否易查、提示是否前置,以及服务是否具备连续性。在外汇相关服务中,读者最在意的通常是信息是否清楚、…

2026/8/21 8:54:46 阅读更多 →
C#关于同步方法里面调用异步方法的探究

C#关于同步方法里面调用异步方法的探究

前言 我在写代码的时候(.net core)有时候会碰到void方法里,调用async方法并且Wait,而且我还看到别人这么写了。而且我这么写的时候,编译器没有提示任何警告。但是看了dudu的文章:一码阻塞,万码等待:ASP.NET Core 同步方法调用异步方法“死锁”的真相 了解了,这样写是有…

2026/8/21 8:54:45 阅读更多 →
SovereignNegotiation-Bench:评估AI代理在隐私与合规约束下的谈判能力

SovereignNegotiation-Bench:评估AI代理在隐私与合规约束下的谈判能力

1. 项目概述:当你的数字替身去谈判 想象一下,你需要在网上购买一项服务,比如一份保险,或者租一套房子。传统的流程是,你打开一个网站或App,面对一个由平台设定的、充满复杂条款和隐藏选项的界面&#xff0c…

2026/8/21 8:54:45 阅读更多 →
卡尔曼滤波实战:从原理到代码,掌握目标跟踪与状态估计

卡尔曼滤波实战:从原理到代码,掌握目标跟踪与状态估计

这类算法教程最值得先看的不是它列了多少公式,而是能不能帮你把“预测-更新”这个核心循环真正用起来。卡尔曼滤波在目标跟踪、传感器融合、状态估计这些场景里几乎是绕不开的,但很多人卡在理论推导和代码落地之间,感觉懂了又好像没完全懂。 …

2026/8/21 8:53:43 阅读更多 →

日新闻

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

机场边检旅客定位系统国产化白皮书:算法、硬件、底座平台全程自主

前言随着国家数字基础设施信创替代、关键技术自主可控战略持续深化,口岸智慧安防、边检智能管控领域正全面进入国产化、自主化、安全可控升级周期。当前国内机场边检旅客识别与定位体系长期依赖国外商用视觉算法、进口成像硬件、闭源通用计算平台,存在核…

2026/8/21 0:00:42 阅读更多 →
别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱

别再把“数字孪生”当空间智能了!镜像视界揭开四维时空的真正面纱当下数字化建设浪潮中,很多项目将三维可视化、视频贴图叠加的数字孪生等同于空间智能。传统数字孪生更多停留在三维场景复刻,擅长把物理世界“画出来、展示出来”,…

2026/8/21 0:00:42 阅读更多 →
105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40°C到85°C的影像质量一致性——ISP参数温漂补偿与产线标定策略

105、车载温度范围-40C到85C的影像质量一致性——ISP参数温漂补偿与产线标定策略 去年冬天在北方某车厂做A样评审,凌晨四点的黑河试验场,零下三十三度。客户拿了一台冷启动的车,中控屏上倒车影像全是雪花噪点,暗部细节直接糊成一片。我第一反应是sensor温度没上来,暗电流…

2026/8/21 0:00:42 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 0:02:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/20 21:46:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/21 0:14:22 阅读更多 →