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

如何使用Python从无table id的网页提取表格并导出为CSV文件

问题核心原因

目标网站采用前端动态渲染机制,表格数据是浏览器加载基础HTML后,通过JavaScript异步请求接口再渲染到页面上的。你直接用urllib发起静态请求,只能拿到未填充数据的初始框架代码,和浏览器中F12检查到的渲染后完整代码自然不一致,也就无法定位到表格节点。

可行解决思路

方案1:用模拟浏览器工具获取渲染后页面(新手友好,无需分析接口)

直接用Selenium模拟浏览器访问页面,等待JS渲染完成后再提取表格内容,步骤如下:

  1. 安装依赖包:
pip install selenium webdriver-manager pandas
  1. 可直接运行的参考代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

# 启动无头浏览器(不弹出窗口,不需要的话可以去掉options配置)
options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get("https://lunarcrush.com/exchanges")

# 等待表格渲染完成,最长等待10秒
try:
    table = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "MuiTable-root"))
    )
    # 提取表头
    headers = [th.text.strip() for th in table.find_elements(By.XPATH, ".//thead//th")]
    # 提取行数据
    rows = []
    for tr in table.find_elements(By.XPATH, ".//tbody//tr"):
        row = [td.text.strip() for td in tr.find_elements(By.XPATH, "./td")]
        if row:
            rows.append(row)
    # 生成CSV
    df = pd.DataFrame(rows, columns=headers)
    df.to_csv("lunarcrush_exchanges.csv", index=False, encoding="utf-8-sig")
    print("CSV生成完成,共提取{}条数据".format(len(rows)))
finally:
    driver.quit()

方案2:直接请求数据接口(效率更高,适合每日定时运行)

打开浏览器F12开发者工具,切换到「网络」面板,筛选「Fetch/XHR」请求,刷新页面后就能找到返回表格JSON数据的接口,直接请求该接口即可拿到结构化数据,不需要解析HTML,处理起来更高效,也不会受页面元素变动影响。

你原有代码的问题

除了静态请求拿不到渲染内容之外,你的XPath选择器也存在错误:你选择的是MuiTableHead-root下的tr,这个类对应的是表格表头容器,只能拿到表头行,拿不到表格主体的内容行。


内容的提问来源于stack exchange,提问作者Maria P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:02