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

如何解决使用Pandas和Beautiful Soup抓取Baseball Reference指定投球数据表格时的“No tables found”错误?

如何解决使用Pandas和Beautiful Soup抓取Baseball Reference指定投球数据表格时的“No tables found”错误?

嘿,我刚好踩过类似的坑!你的问题根源其实特别直白——你用的表格ID拼写错了,Baseball Reference上的球队投球表格ID是用下划线分隔单词的,不是把所有词汇连在一起的。

咱们一步步拆解问题和解决办法:

问题到底出在哪?

你在代码里写的表格ID是ArizonaDiamondbackspitching,但打开目标页面检查实际的HTML元素就会发现,亚利桑那响尾蛇的投球表格真实ID是Arizona_Diamondbacks_pitching(球队名的单词之间用下划线隔开,再加上_pitching)。不管是pd.read_html还是BeautifulSoup的查找方法,找不到匹配的ID自然就会返回空列表或者抛出“No tables found”错误。

修正后的代码方案

方案1:直接用Pandas读取(最简洁)

只需要把表格ID改成正确的,再顺便处理下页面里重复的表头行(Baseball Reference的表格会在中间插入重复表头,需要清理掉):

import pandas as pd

_URL = "https://www.baseball-reference.com/boxes/ARI/ARI202204070.shtml"
# 替换为正确的带下划线的表格ID
data = pd.read_html(_URL, attrs={'id': 'Arizona_Diamondbacks_pitching'}, header=1)[0]
# 清理表格中重复的表头行(通过Name列值判断过滤)
data = data[data['Name'] != 'Name']
# 注意index参数是布尔值,不要加引号(你原来的代码里写了index='False',这会把字符串作为索引列名)
data.to_csv('boxscore.csv', index=False)
print(data)

方案2:BeautifulSoup配合Pandas读取

如果你还是想用BeautifulSoup先定位表格,同样只要修正ID就能解决:

from bs4 import BeautifulSoup
from io import StringIO
import pandas as pd
import requests

# 用普通requests Session即可,你如果有自定义的BRefSession也可以继续用
session = requests.Session()
_URL = "https://www.baseball-reference.com/boxes/ARI/ARI202204070.shtml"
content = session.get(_URL).content
soup = BeautifulSoup(content, "html.parser")
# 用正确的ID精准定位表格
table = soup.find('table', id="Arizona_Diamondbacks_pitching")

if table:
    data = pd.read_html(StringIO(str(table)), header=1)[0]
    # 同样清理重复的表头行
    data = data[data['Name'] != 'Name']
    data.to_csv('boxscore.csv', index=False)
    print(data)
else:
    print("表格未找到,请再次确认ID是否正确")

小技巧:快速确认表格ID的方法

以后遇到网页抓取的元素定位问题,直接用浏览器开发者工具就能搞定:

  1. 打开目标页面,右键点击你要抓取的表格
  2. 选择“检查”(Inspect),浏览器会自动定位到表格的HTML元素
  3. 复制元素的id属性值,直接用在代码里就不会出错啦!

备注:内容来源于stack exchange,提问作者Preston Albury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:29:50