【问题标题】:Scrapy - Use feed exporter for a particular spider (and not others) in a projectScrapy - 为项目中的特定蜘蛛(而不是其他蜘蛛)使用提要导出器
【发布时间】: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...有什么建议吗?

【问题讨论】:

    标签: python json scrapy


    【解决方案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())找到了更短的方式
    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多