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

Selenium Python爬取含逗号数据写入Excel/CSV被拆分多列如何解决

问题原因

手动拼接逗号生成CSV的写法不符合标准CSV格式规范:CSV默认以半角逗号作为列分隔标记,当字段内容本身包含逗号时,如果没有做合规的转义包裹,Excel读取文件时会直接把字段内部的逗号识别成分列符号,把完整的地址内容拆分到多个列中,该问题和XPath提取数据的逻辑无关。
示例地址No 3, Jalan Kuching, 43500, Kuala Lumpur, Malaysia.本身包含4个半角逗号,会被错误拆分为多列内容。

修复方法

不要手动拼接字符串写CSV,直接使用Python内置的csv标准库处理写入流程,库会自动完成所有特殊字符(逗号、换行、双引号等)的转义,不需要手动处理格式兼容问题。
修复后的代码如下:

import csv
import time
from os import path
from selenium.webdriver.common.by import By

# 保留原有driver初始化、xpath配置的代码即可

filename = "data.csv"
file_exist = path.exists(filename)

# 打开文件时指定newline=''是Python操作csv的官方规范,避免Windows下出现多余空行
with open(filename, "a", encoding="utf-8", newline='') as f:
    csv_writer = csv.writer(f)
    # 首次创建文件时写入表头
    if not file_exist:
        csv_writer.writerow(["Autopay", "Address"])

    autopay = driver.find_element(by=By.XPATH, value=xpath["autopay1"]).text
    address = driver.find_element(by=By.XPATH, value=xpath["address1"]).text
    
    time.sleep(20)
    # 按行写入数据,自动处理字段内特殊字符转义
    csv_writer.writerow([autopay, address])
注意事项
  • 上述代码生成的CSV文件,即使字段内包含逗号、换行、双引号等特殊字符,用Excel打开后都会完整保存在单个单元格内,不会出现拆分问题
  • 不推荐手动给字段加双引号的临时方案,一旦字段内容本身包含双引号、换行符,还是会出现格式错乱,使用标准库是兼容性最高、最稳妥的方案
  • 如果后续需要导出更复杂的Excel格式(比如单元格样式、多工作表),可以替换用openpyxl库直接写.xlsx格式文件,从根源上避免CSV的分隔符解析问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:39:29