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

pandas调用read_html解析HTML表格无法提取全部行的问题求助

问题排查与解决方案

1. 行数缺失的核心原因

  • read_html默认自动识别表头:默认会把HTML表格的第一行识别为DataFrame的列名,不计入数据行。你7行的原始表格,第一行被转为列名后,数据行自然只剩6行,和你不用head()得到6行的现象完全吻合。
  • head()默认只返回前5行:df.head()不带参数时默认仅返回前5条数据,并非删除了最后一行,需要查看更多行时可以传入指定行数,比如df.head(10)查看前10行,直接打印df默认会显示全部行(行数特别多的情况除外)。
  • 隐藏行未被解析:如果HTML中存在CSS设置为隐藏的表格行,read_html默认只会解析可见行,也会导致行数缺失。
  • 解析器兼容问题:如果HTML表格语法不规范、存在合并单元格,不同解析器的解析结果会有差异,可以切换解析器参数尝试。

2. 你操作上的错误点

你采用df[2][3]的取值方式存在风险:pandas中方括号默认优先取列,df[2]是先取索引为2的列,再取该列的索引为3的行,很容易搞混行列顺序,也可能因为列名类型不匹配触发报错。

3. 修复后的代码示例

r = get(f"site-censured").text
# header=None 关闭自动表头识别,所有行都作为数据行;displayed_only=False 同时解析隐藏行;可按需切换flavor解析器为lxml/html5lib
df = read_html(r, header=None, displayed_only=False, flavor='html5lib')[0]
# 打印总行数验证是否符合预期
print(f"表格总行数:{len(df)}")
# 正确的按位置取值方式:iloc[行索引, 列索引],索引从0开始计数
target_value = df.iloc[2, 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:09:01