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

如何爬取NBA官网联合试训数据表格?现有脚本无法获取表格

解决NBA联合试训数据爬取问题

你的代码拿不到表格是因为NBA Stats页面的表格是动态加载的,静态HTML里根本没有表格内容,数据是通过后端API接口异步获取的。直接用BeautifulSoup解析静态响应自然找不到表格。

以下是可行的爬取方案:

核心思路

  1. 找到页面背后的API接口(通过浏览器抓包获取)
  2. 模拟浏览器请求头调用API,避免被反爬拦截
  3. 解析返回的JSON数据,转换成DataFrame格式

完整代码示例

import requests
import pandas as pd

# 目标API接口(对应2021-22赛季的联合试训数据)
url = "https://stats.nba.com/stats/draftcombineanthro"
params = {
    "LeagueID": "00",
    "SeasonYear": "2021-22"
}

# 模拟浏览器请求头,关键是User-Agent和Accept
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "Accept": "application/json, text/plain, */*",
    "Referer": "https://www.nba.com/stats/"
}

# 发送请求获取JSON数据
response = requests.get(url, params=params, headers=headers)
data = response.json()

# 提取数据字段和内容
columns = [col["name"] for col in data["resultSets"][0]["headers"]]
rows = data["resultSets"][0]["rowSet"]

# 转换成DataFrame
df = pd.DataFrame(rows, columns=columns)
print(df.head())
# 保存到CSV
df.to_csv("nba_combine_2021_22.csv", index=False)

关键说明

  • 请求头设置:必须带上User-Agent和Referer,否则NBA的API会直接返回403禁止访问
  • API参数:SeasonYear可以改成你需要的赛季(比如2022-23),LeagueID固定为00代表NBA联盟
  • 数据解析:API返回的JSON结构里,resultSets[0]包含了所有的表头和行数据,直接提取转换即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:13:15