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

pd.read_html读取网页表格:表头合并、多表提取不全问题求助

解决pd.read_html读取考拉管理区网页表格的问题

一、提取所有table-striped类的表格

pd.read_html默认会返回所有匹配指定条件的表格列表,无需额外用find_all处理。直接通过attrs参数指定表格类,再合并所有表格即可:

import pandas as pd

# 读取网页中所有class为table-striped的表格
tables = pd.read_html("目标网页URL", attrs={"class": "table-striped"})
# 合并所有表格为单个DataFrame
combined_df = pd.concat(tables, ignore_index=True)

这样就能把第二个表格里的White Box, Eucalyptus albens等物种数据纳入结果。

二、修复单列表头,匹配“High preferred use”字段

网页表格常存在表头单元格合并(colspan/rowspan),导致pd.read_html误将表头识别为单列。按以下步骤处理:

  1. 先定位正确的表头行:用header参数指定表头所在的行索引(从0开始),如果是多级表头可传入列表(如header=[0,1])。
  2. 手动重置列名,确保“High preferred use”对应正确列。

示例代码:

# 读取表格时指定表头行
tables = pd.read_html("目标网页URL", attrs={"class": "table-striped"}, header=0)

# 处理每个表格的表头(假设表头被识别为单列,第一行是实际列名)
for idx, df in enumerate(tables):
    # 提取第一行作为新列名
    new_columns = df.iloc[0].tolist()
    # 从第二行开始保留数据
    tables[idx] = df[1:].reset_index(drop=True)
    # 设置新列名
    tables[idx].columns = new_columns

# 合并处理后的表格
combined_df = pd.concat(tables, ignore_index=True)

如果表头是多级结构,可先合并多级表头为单级列名,再调整数据行。操作前可先打印tables[0].head()确认表格结构,精准定位表头行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:20:49