Scrapy忽略每个蜘蛛的自定义设置

Scrapy忽略每个蜘蛛的自定义设置,scrapy,web-crawler,Scrapy,Web Crawler,在scrapy 2.0.1中,我试图设置每个蜘蛛的深度设置。虽然它可以在全局设置中工作,但不能在每个spider的单个设置中工作: class GetbidSpider(CrawlSpider): name = 'test' custom_settings = { 'DOWNLOAD_DELAY': 5, 'DEPTH_LIMIT': 1, } 这个中间件: from scrapy import signals class BidSp

在scrapy 2.0.1中,我试图设置每个蜘蛛的深度设置。虽然它可以在全局设置中工作,但不能在每个spider的单个设置中工作:

class GetbidSpider(CrawlSpider):
    name = 'test'

    custom_settings = {
        'DOWNLOAD_DELAY': 5,
        'DEPTH_LIMIT': 1, 
    }
这个中间件:

from scrapy import signals
class BidSpiderMiddleware(object):
    @classmethod
    def from_crawler(cls, crawler):
        # This method is used by Scrapy to create spiders.
        s = cls()
        crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
        return s

     def spider_opened(self, spider):
        spider.logger.info('Spider opened: %s' % spider.name)
如何根据每个蜘蛛设置深度

在scrapy 2.02中,我正在尝试

目前,最新可用的刮擦版本是

乍一看,您的代码是正常的,它应该按照您的预期工作(每个spider的设置)

有几种情况下它将不起作用:

  • 使用带有
    -s
    参数的命令行工具来定义设置。
    这些设置具有spider
    自定义设置。因此,它将覆盖spider
    自定义设置中的设置

  • name='test'

    Spider
    name
    属性对于每个Spider应该是不同的/唯一的
  • 每个spider的自定义设置
    仅在将其硬编码为spider代码(如示例代码中所示)时才起作用。如果你试着去做,那是行不通的。。通过spider
    \uuuu init\uuuu
    或crawler
    方法动态更新它们

  • 我终于发现了错误。再往下几行有一个条目覆盖了设置

    现在,我正在将设置添加到现有词典中,并且我已经脱离困境:-)


    你是对的2.0.1;-)对第三点不太清楚。我正在使用一个中间件,并且已经更新了这个问题。你能添加
    spider\u opened
    方法的代码吗?您的
    BidSpiderMiddleware
    的优先级是多少?@Georgiy编辑了问题并添加了方法。
    custom_settings = af.create_image_dir(name)
    custom_settings.update({
        'DOWNLOAD_DELAY': 30,
        'DEPTH_LIMIT': 1, 
    })