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

如何在Scrapy的CrawlerProcess中设置Feed Exporter覆盖输出文件?

Scrapy CrawlerProcess 实现爬取结果覆盖导出文件

问题背景

用Scrapy开发爬虫,通过CrawlerProcess而非命令行执行,已用Feed exporters实现JSON文件导出,代码如下:

from scraper.spiders.pp_spider import ConverterSpider
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

settings = get_project_settings()
settings.set('FEED_FORMAT', 'json')
settings.set('FEED_URI', 'result.json')

process = CrawlerProcess(settings)

process.crawl(ConverterSpider)
process.start()

现在需要每次新爬取时自动覆盖result.json,但直接用FEEDS字典配置的方式在CrawlerProcess里无效,想通过代码动态设置实现覆盖需求。

解决方法

Scrapy 2.0及以上版本已采用FEEDS统一配置导出规则,替代了旧版的FEED_FORMAT、FEED_URI等单独配置项。要实现覆盖,需直接将FEEDS字典传入settings.set()方法,而非单独设置overwrite参数。

修改后的完整代码:

from scraper.spiders.pp_spider import ConverterSpider
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

settings = get_project_settings()
# 配置FEEDS字典,指定文件路径、格式及覆盖规则
settings.set('FEEDS', {
    'result.json': {
        'format': 'json',
        'overwrite': True
    }
})

process = CrawlerProcess(settings)
process.crawl(ConverterSpider)
process.start()

关键注意事项

  • 不要同时混用旧版FEED_*配置和新版FEEDS配置,避免出现配置冲突导致的异常
  • overwrite是FEEDS字典中对应文件的子配置项,不能作为顶级配置单独设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:43:29