繁体   English   中英

停止覆盖 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)

要通过子进程将自定义 arguments 输入到每个蜘蛛中,我的蜘蛛开始如下:

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 中选择的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 默认设置中的设置已替换为项目中settings.py文件中定义的设置。

设置名称 scrapy 默认设置值 你的settings.py
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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM