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

使用BeautifulSoup抓取数据后追加写入CSV文件时遇到问题

嘿,我来帮你排查这个CSV追加写入的问题!结合你提供的HTML结构(要抓取职位名称、公司信息这些数据对吧),常见的异常原因和解决办法大概有这几种:

常见异常原因及解决方案

1. 文件打开模式或编码错误

很多人追加写入时会搞错模式,比如用w(覆盖写入)而非a(追加),或者没指定编码导致乱码甚至报错。正确的打开方式应该是:

import csv

# 追加模式,指定utf-8编码避免特殊字符乱码,newline=''防止Windows下出现空行
with open('jobs.csv', 'a', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    # 写入抓取到的职位、公司数据
    writer.writerow([job_title, company_name])

2. 抓取的数据格式不匹配

如果抓取的字段是None(比如某个元素没找到),或者数据长度和CSV表头不一致,写入时会直接报错。建议先对数据做校验处理:

from bs4 import BeautifulSoup

# 假设你已经拿到解析后的soup对象
job_title_tag = soup.find('h2', itemprop='title').a
job_title = job_title_tag.get_text(strip=True) if job_title_tag else '无职位名称'

company_tag = soup.find('h3', itemprop='name').a
company_name = company_tag.get_text(strip=True) if company_tag else '无公司名称'

# 确保数据是列表形式,且长度和表头一致
writer.writerow([job_title, company_name])

3. 特殊字符导致CSV列错位

如果抓取的内容包含逗号、引号这类CSV的特殊字符,直接写入会导致列错位。用csv.DictWriter会更稳妥,它能自动处理特殊字符:

import csv
import os

with open('jobs.csv', 'a', newline='', encoding='utf-8') as csvfile:
    fieldnames = ['职位名称', '公司名称']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
    # 仅当文件为空时写入表头,避免重复
    if os.path.getsize('jobs.csv') == 0:
        writer.writeheader()
    
    writer.writerow({'职位名称': job_title, '公司名称': company_name})

4. 未捕获异常定位问题

如果还是报错,建议加上异常捕获块,快速定位具体问题:

try:
    with open('jobs.csv', 'a', newline='', encoding='utf-8') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([job_title, company_name])
except Exception as e:
    print(f"写入CSV时出错: {str(e)}")
    print(f"出错的目标数据: 职位={job_title}, 公司={company_name}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:27:21