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

如何用pandas将Selenium循环爬取的每条内容逐行写入CSV文件

Selenium爬取内容写入CSV(支持后续新增列)实现方案

原有代码错误原因

  • 变量名冲突:将pandas的别名pd赋值为DataFrame对象,覆盖了pandas模块引用
  • 写入模式错误:to_csv默认是覆盖写入模式,每次循环都会清空之前的内容,最终仅保留最后一条数据
  • 语法错误:pandas的DataFrame构造方法是首字母大写的DataFrame,不是小写dataframe

实现方案

方案1:全量收集数据后一次性写入(推荐,性能更高)

适合爬取数据量不大、不会中途中断的场景,后续新增列只需调整字典键即可自动适配:

import pandas as pd
# 其他selenium相关导入省略

# 初始化列表存储所有爬取条目
data = []
prodTitle = driver.find_elements_by_xpath("//*[contains(@class,'itemTitle')]")
for pTitle in prodTitle:
    # 用字典存储单条数据,后续新增列直接加字典键值对即可
    item = {
        "商品标题": pTitle.text
        # 示例新增列:"商品价格": pPrice.text, "商品链接": pUrl.get_attribute("href")
    }
    data.append(item)
    print(pTitle.text)

# 全部爬取完成后统一写入CSV
df = pd.DataFrame(data)
# index=False 去掉默认行号,encoding='utf-8-sig' 解决中文乱码问题
df.to_csv("data.csv", index=False, encoding="utf-8-sig")

方案2:循环逐行追加写入(适合爬取量大、易中断场景)

边爬边存,避免爬虫中途崩溃丢失已爬取数据:

import pandas as pd
import os
# 其他selenium相关导入省略

prodTitle = driver.find_elements_by_xpath("//*[contains(@class,'itemTitle')]")
for pTitle in prodTitle:
    item = {
        "商品标题": pTitle.text
        # 新增列直接加字典键值对即可
    }
    df = pd.DataFrame([item])
    # 判断文件是否存在:不存在则写入表头,存在则追加内容不写表头
    if not os.path.exists("data.csv"):
        df.to_csv("data.csv", index=False, encoding="utf-8-sig")
    else:
        # mode='a' 代表追加写入模式,header=False 不重复写入表头
        df.to_csv("data.csv", mode="a", header=False, index=False, encoding="utf-8-sig")
    print(pTitle.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 12:54:03