Python爬取数据后DataFrame存CSV报错,求代码修正方案
问题修正方案
核心问题原因
pd.read_html() 方法返回的是DataFrame对象的列表,而非单个DataFrame。直接对整个列表调用 to_csv() 会触发对象类型错误——列表没有这个方法。
修正步骤
- 确认
pd.read_html()返回的列表中包含的DataFrame数量,取出你需要的目标表格(通常是第一个,索引为0)。 - 对取出的单个DataFrame执行CSV保存操作。
- 若页面有多个表格,可先逐个查看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
相关产品推荐
相关产品推荐

