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

pd.read_html读取网页时匹配Shooting表格失败报错问题

问题产生原因

Basketball Reference站点的Shooting投篮数据表,默认被包裹在HTML注释标签<!-- -->内部,不属于页面初始加载的正常DOM表格元素。pandas.read_html()默认只会提取DOM流里直接存在的<table>标签内容,不会主动解析注释块里藏着的表格,所以会抛出找不到匹配表格的异常。
Roster、Totals这类表格本身直接写在正常DOM结构里,没被注释包裹,所以把match参数换成这两个关键词时能正常读到对应表格。

解决方法

先把完整页面源码拉下来,手动删掉注释标签把藏在注释里的表格放出来,再调用read_html匹配读取就行,参考代码如下:

import pandas as pd
import requests

target_url = "https://www.basketball-reference.com/teams/MIA/2022.html"
# 带常规浏览器UA请求,避免被站点反爬拦截返回403
resp = requests.get(
    target_url,
    headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}
)
# 替换掉注释标识,把注释里包的表格释放到正常HTML结构中
processed_html = resp.text.replace("<!--", "").replace("-->", "")
# 匹配Shooting关键词,返回列表的第一个元素就是目标投篮数据表
shooting_df = pd.read_html(processed_html, match="Shooting")[0]

补充注意点:

  • 读出来的Shooting表默认是多级列索引结构,直接用会出现列名重复的问题,可以根据自己的分析需求把多级列名拼接成单级列名,做扁平化处理
  • 不要高频重复请求站点,容易被封IP,单次请求失败的话可以加个几秒的间隔再重试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:51:44