在scrapy中,需要实现的爬虫类都需要继承scrapy.Spider类,其中的源码解析:
class Spider(object_ref):
name = None #爬虫的名字,spider的名字定义了Scrapy如何定位(并初始化)spider
custom_settings = None #当启动spider时,该设置将会覆盖项目级的相同设置.
def __init__(self, name=None, **kwargs):
# 如果爬虫没有名字,中断后续操作则报错
if name is not None:
self.name = name
elif not getattr(self, 'name', None):
raise ValueError("%s must have a name" % type(self).__name__)
self.__dict__.update(kwargs)
if not hasattr(self, 'start_urls'):
# python对象或类型通过内置成员__dict__来存储对象的属性和方法等信息
self.start_urls = []
# 是Scrapy用来创建爬虫的类方法。
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = cls(*args, **kwargs)
spider._set_crawler(crawler)
return spider