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
相关产品推荐
相关产品推荐

