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

joh*_*doe 4 python json scrapy

环境:Windows7、Python 3.6.5、Scrapy 1.5.1

问题描述:

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

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

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

目前我使用ITEM EXPORTERSsettings.py用下面的代码:

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'
Run Code Online (Sandbox Code Playgroud)

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

joh*_*doe 5

这样做的方法是通过在特定蜘蛛下定义custom_settings一个class属性来编写项目导出器。Spider 设置会覆盖项目设置。

所以,对于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',
    }
Run Code Online (Sandbox Code Playgroud)