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

将HTML输出转为表格遇阻:网页爬取后无法生成CSV表格

解决爬取表格数据并导出为CSV的方法

问题分析

原代码的自定义HTMLParser逻辑存在错误,handle_starttag里调用handle_data()未传参数,且未精准定位表格的行、单元格元素,导致仅捕获到无关元数据。另外该页面表格为动态渲染,需等待加载完成后再提取数据。

改进后的代码

直接通过Selenium定位表格元素,提取行与单元格数据,再用Pandas转换为DataFrame并导出为CSV:

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "https://flo.uri.sh/visualisation/15396850/embed?auto=1"

# 初始化Chrome浏览器
driver = webdriver.Chrome()
driver.get(url)

try:
    # 等待表格加载完成,最长等待10秒
    table = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "table"))
    )

    # 提取表头文本
    headers = [th.text.strip() for th in table.find_elements(By.TAG_NAME, "th")]

    # 提取表格行数据,跳过表头行
    rows = []
    for tr in table.find_elements(By.TAG_NAME, "tr")[1:]:
        cells = [td.text.strip() for td in tr.find_elements(By.TAG_NAME, "td")]
        if cells:  # 过滤空行
            rows.append(cells)

    # 转换为DataFrame并导出为CSV
    df = pd.DataFrame(rows, columns=headers)
    df.to_csv("table_data.csv", index=False, encoding="utf-8-sig")
    print("表格数据已成功导出到table_data.csv")

finally:
    # 关闭浏览器
    driver.quit()

代码说明

  • 用WebDriverWait等待表格元素加载,避免页面未渲染完成导致的元素查找失败问题。
  • 通过table、th、tr、td标签定位,精准提取表头与每行数据。
  • 借助Pandas将数据转为DataFrame,直接导出为CSV文件,无需手动处理格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:22:11