Scrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器

Posted

技术标签:

【中文标题】Scrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器【英文标题】:Scrapy - Use feed exporter for a particular spider (and not others) in a project 【发布时间】:2019-04-18 12:33:43 【问题描述】:

环境: Windows7、Python 3.6.5、Scrapy 1.5.1

问题描述:

我有一个名为project_github 的scrapy 项目,其中包含3 个蜘蛛:spider1spider2spider3。这些蜘蛛中的每一个都会将特定网站个人的数据抓取到该蜘蛛。

我正在尝试在执行特定蜘蛛时自动导出 JSON 文件,格式为:NameOfSpider_TodaysDate.json,这样我就可以从命令行:

执行返回spider1_181115.json的脚本scrapy crawl spider1

目前我在settings.py 中使用ITEM EXPORTERS,代码如下:

import datetime
FEED_URI = 'spider1_' + datetime.datetime.today().strftime('%y%m%d') + '.json'
FEED_FORMAT = 'json'
FEED_EXPORTERS = 'json': 'scrapy.exporters.JsonItemExporter'
FEED_EXPORT_ENCODING = 'utf-8'

显然,无论使用什么蜘蛛,这段代码总是写spider1_TodaysDate.json...有什么建议吗?

【问题讨论】:

【参考方案1】:

这样做的方法是将custom_settings 定义为class 属性,具体蜘蛛正在为其编写项目导出器。蜘蛛设置覆盖项目设置。

所以,对于spider1

class spider1(scrapy.Spider):
    name = "spider1"
    allowed_domains = []

    custom_settings = 
        'FEED_URI': 'spider1_' + datetime.datetime.today().strftime('%y%m%d') + '.json',
        'FEED_FORMAT': 'json',
        'FEED_EXPORTERS': 
            'json': 'scrapy.exporters.JsonItemExporter',
        ,
        'FEED_EXPORT_ENCODING': 'utf-8',
    

【讨论】:

就在今天我遇到了打印日期的问题,并使用了你的方式,直到我通过str(datetime.date.today())找到了更短的方式

以上是关于Scrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 Scrapy 项目中为不同的蜘蛛使用不同的管道

Scrapy是什么(未完待续)

从脚本scrapy运行蜘蛛

Scrapy - 输出到多个 JSON 文件

从多个链接获取数据,同时存储在 Scrapy 中的一项中

在 Scrapy 中在一个蜘蛛中有多个解析方法是不是正确?