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

如何编写循环遍历HTML页面中所有表格的Python代码?

处理HTML页面中所有表格的解决方案

看起来你已经搞定了单个表格的处理逻辑,要扩展到全页面的表格其实很简单,核心就是遍历所有表格元素,并把每个表格和对应的日期配对处理。我帮你修改代码,同时优化一些细节(比如更安全的文件操作):

首先确保你已经导入了必要的模块(如果还没加的话):

import csv
from bs4 import BeautifulSoup

然后调整核心逻辑,用循环批量处理每一组日期和表格:

# 读取本地HTML文件内容
with open("tabledata.html", "r") as f:
    contents = f.read()

# 用with语句管理CSV文件,自动处理关闭操作,避免资源泄漏
with open("table_data.csv", "w", newline='') as outfile:
    writer = csv.writer(outfile)
    tree = BeautifulSoup(contents, "lxml")
    
    # 获取页面中所有日期元素和所有表格元素
    dates = tree.findAll(class_="date")
    all_tables = tree.select("table")
    
    # 遍历每一对日期和表格(默认每个表格对应一个日期)
    for date, table in zip(dates, all_tables):
        # 写入当前表格对应的日期作为标识行
        writer.writerow([date.text])
        
        # 提取当前表格的所有行数据,顺便清理单元格文本的多余空格
        tab_data = [[item.text.strip() for item in row.select("th,td")] for row in table.select("tr")]
        
        # 逐行写入表格数据
        for row in tab_data:
            print(' '.join(row))
            writer.writerow(row)
        
        # 可选:在不同表格之间插入空行,让CSV内容更易读
        writer.writerow([])

关键修改说明:

  • 批量获取元素:用tree.select("table")拿到页面所有表格,不再只取索引[0]的第一个;同时保留所有日期元素。
  • 配对遍历:用zip(dates, all_tables)把日期和表格一一绑定,确保每个表格都能关联到对应的日期。
  • 文件操作优化:把CSV写入操作也放进with语句,不用手动关闭文件,更安全可靠。
  • 数据清洗(可选):给item.text加上.strip(),去除单元格文本里的多余空格和换行符,让CSV数据更整洁。

如果页面中日期和表格数量不匹配(比如部分表格没有对应日期),你可以根据实际情况调整逻辑,比如用enumerate遍历表格,或者添加判断跳过无对应日期的表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:30:04