Scrapy忽略每个蜘蛛的自定义设置
在scrapy 2.0.1中,我试图设置每个蜘蛛的深度设置。虽然它可以在全局设置中工作,但不能在每个spider的单个设置中工作: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
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,
})