【问题标题】:Scrapy Project with Multiple Spiders - Custom Settings Ignored具有多个蜘蛛的 Scrapy 项目 - 忽略自定义设置
【发布时间】:2016-06-02 16:06:40
【问题描述】:

场景

  • 具有多个蜘蛛的单个 scrapy 项目。
  • 为每个蜘蛛定义的自定义设置。

问题:

  • 在执行(即 scrapy crawl ...)时,正在执行的蜘蛛的自定义设置会被同一项目中另一个蜘蛛的自定义设置覆盖。

spider01.py

class FirstXmlSpider(XMLFeedSpider):

# Spider Name
name = 'spider01'

# Initialise Settings
now = datetime.datetime.now()
settings.set('LOG_FILE', './logs/' + name + '_' + now.strftime("%Y%m%d_%H%M%S") + '.txt')

spider02.py

class SecondXmlSpider(XMLFeedSpider):

# Spider Name
name = 'spider02'

# Initialise Settings
now = datetime.datetime.now()
settings.set('LOG_FILE', './logs/' + name + '_' + now.strftime("%Y%m%d_%H%M%S") + '.txt')

复制步骤

  1. 执行scrapy crawl spider01
  2. 检查日志目录(期望看到以spider01_为前缀的日志文件)
  3. 查看内容正确但文件名错误的日志文件 (spider02_)。

有什么想法吗?我过去用多个蜘蛛设置了scrapy项目,没有问题。不知道为什么我现在遇到问题?

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    由于Scrapy 1.0,您可以为蜘蛛添加自定义设置,而无需更改项目的全局设置。只需在您的蜘蛛中添加一个名为 custom_settings 的属性。

    查看文档:http://doc.scrapy.org/en/latest/topics/settings.html#settings-per-spider

    【讨论】:

    • 谢谢 stumpjr。虽然这似乎适用于 FEED_EXPORT_FIELDS,但scrapy 似乎忽略了 LOG_FILE。我的语法有问题吗? custom_settings = {'FEED_EXPORT_FIELDS': ['field_a', 'field_b', 'field_c'], 'LOG_FILE': 'A.log'}
    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多