[英]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_MODULE
和SPIDER_MODULES
设置,scrapy 将无法读取您的蜘蛛 class。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.