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

如何将bs4.element.Tag类型HTML表格转换为pandas DataFrame

问题1:bs4.element.Tag类型的表格对象转DataFrame是否可实现?

完全可以实现,这里提供两种常用实现方案:

方法1:直接用pandas内置的read_html方法(最便捷)

read_html支持直接传入HTML字符串,你只需要把main_table对象转为字符串传入即可,示例代码:

# 接你已有的代码
df_list = pd.read_html(str(main_table))
# read_html返回的是匹配到的所有表格的列表,取第一个即为目标表格
df = df_list[0]

方法2:手动解析行列(适合需要自定义解析逻辑的场景)

如果后续需要对单元格内容做自定义处理再入库,可以手动遍历行和单元格生成结构化数据再转DataFrame:

table_data = []
# 遍历所有行
for row in main_table.find_all('tr'):
    # 提取当前行所有单元格的文本
    cells = [cell.get_text(strip=True) for cell in row.find_all(['th', 'td'])]
    if cells: # 过滤空行
        table_data.append(cells)
# 第一行作为表头,剩下的作为数据
df = pd.DataFrame(table_data[1:], columns=table_data[0])

问题2:当前抓取表格的方式是否正确?

当前的静态抓取方式无法拿到完整的目标表格数据,原因是RIAA的黄金/白金认证表格是动态加载的:你直接请求目标地址返回的静态HTML里并没有完整的表格数据,数据是页面加载完成后通过接口异步拉取渲染的,所以你用soup.find("table")大概率只能拿到空的表格容器,拿不到实际的认证数据。
如果需要爬取完整数据,推荐两种解决方案:

  • 改用Selenium、Playwright等动态渲染工具模拟浏览器加载页面,等表格渲染完成后再提取HTML
  • 抓包找到页面异步请求的认证数据接口,直接请求接口拿结构化数据,比解析HTML效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:06:03