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

BeautifulSoup提取赛事页面table异常:Group3页面仅返回2个元素

问题解决:Group3页面BeautifulSoup提取表格异常

问题概述

使用Python的BeautifulSoup提取赛事页面表格时,Group2页面可正常返回9个table-sm类的表格,但Group3页面仅返回2个,且第二个表格包含页面头部以下的全部内容。浏览器控制台显示该页面实际存在8个对应元素,但BeautifulSoup无法正确识别。

可能原因

这类差异通常源于HTML结构存在未闭合标签,lxml解析器对不规范HTML的容错性较弱,会错误地将后续内容嵌套进同一个表格;而浏览器的渲染引擎容错性更强,能正确解析并展示元素结构。

解决方案

1. 切换HTML解析器

将lxml替换为Python内置的html.parser,它对不规范HTML的兼容性更好:

import requests
from bs4 import BeautifulSoup

url_gr_3 = 'https://rfetm.es/resultados/2022-2023/view.php?liga=Mg==&grupo=3&subgrupo=S&jornada=1&sexo=M'

req = requests.get(url_gr_3)
# 替换为html.parser解析器
soup = BeautifulSoup(req.content, features="html.parser")
data = soup.find_all("table", class_="table-sm")
print(len(data))
# 此时应返回与浏览器一致的表格数量

2. 检查原始响应内容

若切换解析器后仍有问题,可先打印Group3页面的原始HTML片段,排查是否存在明显的标签错误:

req = requests.get(url_gr_3)
print(req.text[:1000])  # 打印前1000字符检查结构

重点关注是否有未闭合的<table>、<div>等标签,这类问题会直接导致解析器结构识别混乱。

3. 使用CSS选择器定位

如果find_all方法仍异常,尝试用CSS选择器定位目标表格:

data = soup.select("table.table-sm")
print(len(data))

验证方式

运行修改后的代码,检查返回的表格数量是否与浏览器控制台显示一致。若数量正确,即可继续从第4个表格开始提取赛事结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:42:31