停止覆盖 scrapy settings.py

stop overriding scrapy settings.py

我正在使用子进程来 运行 几个并行的 scrapy 蜘蛛,如下所示:

processes = [Popen(['scrapy', 'crawl', 'myspider', '-a', 'custom_argument={}'.format(argument)]) \
             for argument in custom_arguments]

while processes:
    for p in processes[:]:
        if p.poll() is not None:
            processes.remove(p)

要通过子进程向每个蜘蛛输入自定义参数,我的蜘蛛是这样启动的:

class myspider(scrapy.Spider):
    
    name = 'myspider'

    def __init__(self, custom_argument=None, *args, **kwargs):    
        super(myspider, self).__init__(*args, **kwargs)
        ...
    
    def start_requests(self):
        ...

这似乎工作正常,除了我在 settings.py 中选择的设置被覆盖:

2021-01-06 16:57:16 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': 'True', 'AUTOTHROTTLE_START_DELAY': '0.5', 'BOT_NAME': 'openrent', 'COOKIES_ENABLED': False, 'NEWSPIDER_MODULE': 'openrent.spiders', 'SPIDER_MODULES': ['openrent.spiders'], 'USER_AGENT': 'Safari/537.36'}

如何阻止原始设置像这样被覆盖?

这不是错误

此日志行表示来自 scrapy default settings 的设置被替换为 在项目的 settings.py 文件中定义的设置。

setting name scrapy default settings value your settings.py value
AUTOTHROTTLE_ENABLED False True
AUTOTHROTTLE_START_DELAY 5.0 0.5
BOT_NAME scrapybot openrent
COOKIES_ENABLED True False
NEWSPIDER_MODULE `` openrent.spiders
SPIDER_MODULES [] ['openrent.spiders']
USER_AGENT Scrapy/2.4 (+https://scrapy.org) Safari/537.36

没有 NEWSPIDER_MODULESPIDER_MODULES 在你的 settings.py 中定义的设置,scrapy 将无法读取你的蜘蛛 class.