我不明白这些功能。如果我继承Spider
或CrawlSpider
,是否应该重写这些函数。如果没有,那为什么?在
@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将使用它来实例化添加它的对象(spider、扩展、中间件等)。在它通常用于获取对
crawler
对象的引用(该对象包含对settings
,stats
等对象的引用),然后将其作为参数传递给正在创建的对象或为其设置属性。在在您粘贴的特定示例中,它用于从
CRAWLSPIDER_FOLLOW_LINKS
设置中读取值,并将其设置为spider中的_follow_links
属性。在您可以看到another simple example of usage of the from_crawler method in this extension,它使用
crawler
对象获取设置的值并将其作为参数传递给扩展,并将某些{a3}连接到某些方法。在set_crawler
方法在最新的垃圾版本中已被弃用,应该避免使用。在更多信息:
相关问题 更多 >
编程相关推荐