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

如何用read_html提取指定网页表格及筛选后数据?

问题解决方案

1. 指定class提取表格失败的原因及修复

  • 类名匹配问题:pd.read_html的attrs参数要求完全匹配属性值,若网页中表格的class存在动态生成的部分、类名顺序不一致,或你输入的类名与源码中不完全一致,就会匹配失败。
  • 修复方法:
    • 打开网页源码(F12),定位目标表格,确认实际class属性,仅保留核心类名缩小匹配范围,比如:
      tables = pd.read_html(url, attrs={'class': 'tbl-type-1'})
      
    • 若表格是JS动态渲染的,pd.read_html无法抓取,需改用selenium模拟浏览器加载后再提取。

2. 提取Reported date筛选后的数据

  • 静态数据筛选:如果页面加载时已包含所有数据,先抓取表格再用pandas过滤:
    import pandas as pd
    url = "https://spib.wooribank.com/pib/Dream?withyou=ENENG0358"
    tables = pd.read_html(url)[1:4]
    # 假设第一个表格为目标表,筛选指定日期
    filtered_df = tables[0][tables[0]['Reported date'] == '目标日期']
    
  • 动态数据处理:若筛选需触发JS接口请求,有两种方式:
    • 用selenium模拟操作:打开浏览器,定位日期筛选控件输入目标日期,点击筛选后提取页面表格。
    • 抓API接口:通过浏览器F12网络面板,找到筛选时发送的请求,直接请求接口获取JSON数据并转为DataFrame。

3. 辅助调试技巧

  • 打印所有表格的结构,确认目标表位置:
    for idx, table in enumerate(pd.read_html(url)[1:4]):
        print(f"表格{idx+1}列名:{table.columns.tolist()}")
        print(table.head())
    
  • 用match参数通过关键词匹配目标表格:
    target_table = pd.read_html(url, match='Reported date')[0]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:15:35