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

Python爬取网页时BeautifulSoup找不到浏览器inspector显示的tbody原因

问题原因分析
  • 浏览器的自动补全机制:HTML标准规定<table>的直系子元素应为<thead>、<tbody>、<tfoot>三类标签。你看到的原始HTML里<table>下直接放了<tr>属于不规范的写法,浏览器在渲染页面时会自动给没有包裹的行数据套上一层<tbody>标签,所以元素审查工具里能看到这个自动生成的节点。
  • BeautifulSoup的解析逻辑差异:你初始化BeautifulSoup对象时没有指定解析器,默认调用Python内置的html.parser,该解析器不会主动补全缺失的<tbody>标签,因此解析得到的<table>节点下直接就是<tr>节点,调用table.tbody返回空值,触发属性报错。
修复方案

你可以任选以下两种方案解决问题:

  1. 直接调整节点查找逻辑,跳过不存在的<tbody>层,将代码中的table.tbody.find_all('tr')修改为table.find_all('tr')即可。如果需要过滤掉表头的行,可以额外加判断条件排除<thead>下的<tr>。
  2. 改用支持HTML结构补全的解析器:先安装lxml库,命令为pip install lxml,之后初始化BeautifulSoup时指定解析器:soup = BeautifulSoup(web_content.text, 'lxml'),lxml会和浏览器一样自动补全缺失的<tbody>标签,原有查找逻辑无需修改即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:09:03