gpt4 book ai didi

python - Scrapy中 "set_crawler"中的 "from_crawler"和 'crawl.py'的作用是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:55:17 24 4
gpt4 key购买 nike

我无法理解那些功能。如果我继承了 SpiderCrawlSpider,我是否应该覆盖这些函数。如果不是,那为什么?

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = super(CrawlSpider, cls).from_crawler(crawler, *args, **kwargs)
spider._follow_links = crawler.settings.getbool(
'CRAWLSPIDER_FOLLOW_LINKS', True)
return spider

def set_crawler(self, crawler):
super(CrawlSpider, self).set_crawler(crawler)
self._follow_links = crawler.settings.getbool(
'CRAWLSPIDER_FOLLOW_LINKS', True)

最佳答案

通常你不需要覆盖这些函数,但这取决于你想做什么。

from_crawler 方法(使用 @classmethod 装饰器)是一个 factory method Scrapy 将使用它来实例化您添加它的对象(蜘蛛、扩展、中间件等)。

它通常用于获取对 crawler 对象的引用(它包含对 settingsstats 等对象的引用),然后要么将其作为参数传递给正在创建的对象,要么为其设置属性。

在您粘贴的特定示例中,它用于从 CRAWLSPIDER_FOLLOW_LINKS 设置中读取值,并将其设置为蜘蛛中的 _follow_links 属性。

可以看到another simple example of usage of the from_crawler method in this extension它使用 crawler 对象获取设置值并将其作为参数传递给扩展程序并连接一些 signals一些方法。

set_crawler 方法在最新的 Scrapy 版本中已被弃用,应避免使用。

阅读更多:

关于python - Scrapy中 "set_crawler"中的 "from_crawler"和 'crawl.py'的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com