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

如何用BeautifulSoup通过Table ID提取表格?代码返回空列表

解决BeautifulSoup按Table ID查找返回空列表的问题

我帮你分析下问题所在,大概率是解析器的兼容性问题导致的,下面是具体的排查和解决步骤:

1. 先确认请求到的页面内容是否包含目标ID

有时候浏览器看到的页面源码和requests.get()获取到的原始HTML可能有差异(比如JS动态渲染),但你说已经确认页面源码有唯一ID,那可以先打印请求到的内容片段验证:

import requests
url = "https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html"
page = requests.get(url)
# 搜索目标ID是否存在
print('sortableTable0' in page.text)

如果输出True,说明ID确实在原始HTML里,那问题就出在解析环节。

2. 更换解析器(核心解决方案)

Python内置的html.parser对复杂HTML结构的解析支持有限,很多时候会出现无法识别元素属性的情况。你可以换成更强大的lxml解析器:

首先安装lxml(如果还没装):

pip install lxml

然后修改你的代码:

import requests
from bs4 import BeautifulSoup

url = "https://afltables.com/afl/stats/teams/adelaide/2018_gbg.html"
page = requests.get(url)
# 替换为lxml解析器
soup = BeautifulSoup(page.content, 'lxml')
# 因为ID唯一,用find()比find_all()更高效
table = soup.find('table', id='sortableTable0')
print(table)

3. 额外注意事项

  • 确保ID拼写完全正确(大小写、符号都要一致),你提到每个表格ID唯一,这点应该没问题,但还是可以再核对下。
  • 如果上述方法还是不行,那可能是页面的ID是通过JavaScript动态生成的(虽然你说源码里有,但不排除是浏览器渲染后才出现),这时候需要用selenium模拟浏览器渲染页面后再提取,但这种情况概率很低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:51:02