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

Windows10下Scrapy导出CSV去空行且规避编码错误求助

解决Scrapy导出CSV空白行+编码错误问题

嘿,我来帮你搞定这两个头疼的问题:导出CSV时的隔行空白,还有修改后触发的UnicodeEncodeError,其实用一个方法就能同时解决,看下面的具体步骤:

1. 自定义CSV导出器

在你的Scrapy项目根目录下新建一个exporters.py文件(如果已经有就直接用),把下面的代码放进去:

from scrapy.exporters import CsvItemExporter

class UTF8CsvItemExporter(CsvItemExporter):
    def __init__(self, file, include_headers_line=True, join_multivalued=',', **kwargs):
        # 强制用UTF-8编码,避免特殊字符编码失败
        super().__init__(file, include_headers_line=include_headers_line,
                         join_multivalued=join_multivalued, encoding='utf-8', **kwargs)
        # 修改换行符为'\n',解决Windows下CSV隔行空白的问题
        self.csv_writer.lineterminator = '\n'

2. 配置项目使用自定义导出器

打开项目里的settings.py,添加这段配置(记得把your_project_name换成你实际的项目名称):

FEED_EXPORTERS = {
    'csv': 'your_project_name.exporters.UTF8CsvItemExporter',
}

3. 重新执行导出命令

还是用你原来的命令就行:

scrapy crawl jobs -o items.csv

为什么这招管用?

  • 隔行空白问题:Python3的csv模块默认用'\r\n'作为换行符,在Windows环境下导出时就会出现多余的空行,改成'\n'就完美解决了。
  • 编码错误问题:默认的CSV导出器用的是系统默认编码(你的环境里是cp1252),而你爬取的内容里有这个编码不认识的字符,指定utf-8编码就能兼容所有Unicode字符,不会再触发编码失败的错误。

如果不想自定义导出器,也可以直接用命令行参数快速解决,执行这个命令就行:

scrapy crawl jobs -o items.csv -s FEED_EXPORT_ENCODING=utf-8 -s FEED_EXPORT_CSV_LINE_TERMINATOR='\n'

这个方法不用改代码,适合临时测试用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:49:17