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

