如何爬取NBA官网联合试训数据表格?现有脚本无法获取表格
解决NBA联合试训数据爬取问题
你的代码拿不到表格是因为NBA Stats页面的表格是动态加载的,静态HTML里根本没有表格内容,数据是通过后端API接口异步获取的。直接用BeautifulSoup解析静态响应自然找不到表格。
以下是可行的爬取方案:
核心思路
- 找到页面背后的API接口(通过浏览器抓包获取)
- 模拟浏览器请求头调用API,避免被反爬拦截
- 解析返回的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
相关产品推荐
相关产品推荐

