Scrapy - 在运行时根据属性更改设置提供

问题描述 投票:0回答:2

我有乐趣scrapy,在此project,对于Facebook帖子蜘蛛工作。

我想在运行时改变CONCURRENT_REQUESTS参数settings.py中,如果提供了布尔属性

我试图覆盖from_crawler方法如下,但似乎不工作

@classmethod
def from_crawler(cls, crawler, **kwargs):
    settings = cls(crawler.settings)
    if 'conc' in kwargs:
        settings.set('CONCURRENT_REQUESTS',32)
    return settings

能否请你告诉我怎么得当,以及如何改变__init__。我应该将所有的属性在from_crawler解析?谢谢!

python python-3.x scrapy scrapy-spider
2个回答
0
投票

我刚才注意到,因为我可以只使用“-s CONCURRENT_REQUESTS = 32”在运行时。另一种选择将是覆盖update_settings方法,这里的每个人都是一个参考谁运行到这个问题:Update scrapy settings based on spider property


0
投票

CONCURRENT_REQUESTSscrapy.core.downloader.total_concurrency设置中使用。 设置本身是不可变的。但是scrapy.core.downloader对象是可变的。

您可以动态地改变从蜘蛛方法这个值。

class FacebookSpider(scrapy.Spider):
.......    
    def __init__(self, *args, **kwargs):
        if 'conc' in kwargs:
            self.crawler.engine.downloader.total_concurrency = 32

....

© www.soinside.com 2019 - 2024. All rights reserved.