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

如何编写代码将程序变量正确存储写入CSV文件

代码问题说明

你当前的实现存在4个核心问题,会导致运行报错或输出结果不符合预期:

  • 输出文件使用mode='w'在循环内部打开:每次循环执行写入逻辑时都会清空Test1.csv的已有内容,程序运行结束后只会保留最后一个页面的爬取结果
  • 写入逻辑错误:Name是提取到的单个文本字符串,for row in Name会逐字符遍历字符串,直接将字符串传入writerow也会把每个字符拆分为独立列写入,最终CSV格式完全错乱
  • 代码缩进不规范,不符合Python语法要求,运行时会直接抛出缩进错误
  • 缺少异常处理,只要某个页面不存在class为banner-title的元素,程序会直接崩溃终止,未持久化的爬取数据会丢失
正确实现代码
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

# 初始化浏览器驱动,根据你使用的浏览器类型替换对应驱动即可
driver = webdriver.Chrome()

# 同时打开输入、输出文件,避免循环内反复开关文件导致的内容覆盖问题
with open('Test.csv', 'r', encoding='utf-8') as in_csv, \
     open('Test1.csv', 'w', newline='', encoding='utf-8') as out_csv:
    
    csv_reader = csv.reader(in_csv)
    csv_writer = csv.writer(out_csv)

    # 跳过输入文件的表头行,同时给输出文件写入表头
    next(csv_reader)
    csv_writer.writerow(['页面链接', 'banner标题内容'])

    for row in csv_reader:
        page_url = row[0].strip()
        if not page_url:
            continue
        try:
            driver.get(page_url)
            # 提取目标元素文本,去除首尾空白字符
            banner_name = driver.find_element(By.CLASS_NAME, "banner-title").text.strip()
            # 按列写入单行数据
            csv_writer.writerow([page_url, banner_name])
            print(f"爬取完成:{page_url} -> {banner_name}")
        except NoSuchElementException:
            # 单条爬取失败时写入标记,不中断整体流程
            csv_writer.writerow([page_url, "未找到目标元素"])
            print(f"爬取异常:{page_url} 不存在banner-title元素")

# 所有任务执行完毕后关闭浏览器,释放资源
driver.quit()
关键注意事项
  • 打开CSV文件时统一指定encoding='utf-8',避免中文内容出现乱码
  • 写入CSV时传入newline=''是Python csv模块的官方要求,避免Windows系统下输出文件行与行之间多出空行
  • writerow方法接收列表类型参数,列表内的每个元素对应CSV的一列,不会出现字符拆分问题
  • 爬取逻辑增加了异常捕获,单条链接爬取失败不会导致整个程序终止,所有爬取结果都会正常落盘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:39:15