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

Python爬取数据后DataFrame存CSV报错,求代码修正方案

问题修正方案

核心问题原因

pd.read_html() 方法返回的是DataFrame对象的列表,而非单个DataFrame。直接对整个列表调用 to_csv() 会触发对象类型错误——列表没有这个方法。

修正步骤

  1. 确认 pd.read_html() 返回的列表中包含的DataFrame数量,取出你需要的目标表格(通常是第一个,索引为0)。
  2. 对取出的单个DataFrame执行CSV保存操作。
  3. 若页面有多个表格,可先逐个查看DataFrame内容,再选择对应索引的对象。

完整修正代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pandas as pd

# 初始化无头浏览器(可选,也可去掉该部分用可视化浏览器)
chrome_options = Options()
chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=chrome_options)

# 访问目标页面
url = "https://archive.doingbusiness.org/en/scores"
driver.get(url)

# 等待页面加载完成(根据网络情况调整等待时长)
driver.implicitly_wait(10)

# 获取页面源码
page_source = driver.page_source

# 解析页面表格,得到DataFrame列表
df_list = pd.read_html(page_source)

# 关闭浏览器
driver.quit()

# 查看解析到的表格数量
print(f"共解析到 {len(df_list)} 个表格")

# 取出第一个表格作为目标数据(若需其他表格,调整索引即可,比如df_list[1])
target_df = df_list[0]

# 可选:验证数据正确性
print(target_df.info())
print(target_df.head())

# 保存为CSV文件,指定编码避免乱码
target_df.to_csv('output.csv', index=False, encoding='utf-8-sig')
print("CSV文件已成功保存")

额外注意事项

  • 如果页面表格加载较慢,建议改用显式等待(WebDriverWait)等待表格元素加载完成,确保页面源码包含完整表格结构。
  • 若解析出的DataFrame存在空值或异常数据,可先执行 target_df.dropna() 或数据清洗操作后再保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:15:36