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

Selenium多页表格数据未保存,仅存最后一页数据求助

问题分析与代码修正

问题根源

你的代码中df.to_csv('coingeckod.csv')在每一轮循环都会执行,而to_csv默认是覆盖写入模式——每爬完一页就会把之前CSV里的内容全部替换掉,最后自然只保留最后一页的100行数据。

修正方案

我们需要调整CSV写入逻辑:

  • 第一页写入时,同时写入表头并创建文件
  • 从第二页开始,以追加模式写入数据,且不重复写入表头
  • 额外优化浏览器启动逻辑,避免反复启动关闭Chrome,提升爬取效率

修正后的完整代码

import pandas as pd
from selenium.webdriver.common.by import By
from selenium import webdriver

# 只初始化一次浏览器,避免反复启动关闭
driver = webdriver.Chrome()

# 遍历1到19页
for c in range(1, 20):
    linkall = f'https://www.coingecko.com/?page={c}'
    driver.get(linkall)
    
    elem = driver.find_element(By.TAG_NAME, 'table')
    body = elem.find_element(By.TAG_NAME, 'tbody')

    list_rows = []
    for items in body.find_elements(By.TAG_NAME, 'tr'):
        list_cells = []
        for item in items.find_elements(By.TAG_NAME, 'td'):
            list_cells.append(item.text)
        list_rows.append(list_cells)
    
    df = pd.DataFrame(list_rows)
    
    # 第一页写入表头+数据,后续页追加数据且不写表头
    if c == 1:
        df.to_csv('coingeckod.csv', index=False, header=True)
    else:
        df.to_csv('coingeckod.csv', index=False, header=False, mode='a')
    
    print(f"第{c}页数据已保存,共{len(list_rows)}行")

# 爬取完成后关闭浏览器
driver.close()

额外优化说明

  • 将浏览器初始化移到循环外,避免重复启动关闭浏览器,大幅提升爬取速度
  • 添加index=False参数,避免CSV中生成多余的索引列
  • 加入页码进度提示,方便跟踪爬取状态

内容的提问来源于stack exchange,提问作者Mathematics physics Biology

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:45:12