Spider类定义了如何爬去某个网站,包括爬取的动做以及如何从网页内容中提取结构化的数据,总的来讲spider就是定义爬取的动做以及分析某个网页css
咱们以经过简单的分析源码来理解
我一般在写spiders下写爬虫的时候,咱们并无写start_requests来处理start_urls中的url,这是由于咱们在继承的scrapy.Spider中已经写过了,咱们能够点开scrapy.Spider查看分析dom
经过上述代码咱们能够看到在父类里这里实现了start_requests方法,经过make_requests_from_url作了Request请求
以下图所示的一个例子,parse回调函数中的response就是父类列start_requests方法调用make_requests_from_url返回的结果,而且在parse回调函数中咱们能够继续返回Request,以下属代码中yield Request()并设置回调函数。scrapy
咱们全部本身写的爬虫都是继承与spider.Spider这个类ide
name函数
定义爬虫名字,咱们经过命令启动的时候用的就是这个名字,这个名字必须是惟一的post
allowed_domains网站
包含了spider容许爬取的域名列表。当offsiteMiddleware启用时,域名不在列表中URL不会被访问
因此在爬虫文件中,每次生成Request请求时都会进行和这里的域名进行判断url
start_urlsspa
起始的url列表
这里会经过spider.Spider方法中会调用start_request循环请求这个列表中每一个地址。xml
custom_settings
自定义配置,能够覆盖settings的配置,主要用于当咱们对爬虫有特定需求设置的时候
设置的是以字典的方式设置:custom_settings = {}
from_crawler
这是一个类方法,咱们定义这样一个类方法,能够经过crawler.settings.get()这种方式获取settings配置文件中的信息,同时这个也能够在pipeline中使用
start_requests()
这个方法必须返回一个可迭代对象,该对象包含了spider用于爬取的第一个Request请求
这个方法是在被继承的父类中spider.Spider中写的,默认是经过get请求,若是咱们须要修改最开始的这个请求,能够重写这个方法,如咱们想经过post请求
make_requests_from_url(url)
这个也是在父类中start_requests调用的,固然这个方法咱们也能够重写
parse(response)这个其实默认的回调函数负责处理response并返回处理的数据以及跟进的url该方法以及其余的Request回调函数必须返回一个包含Request或Item的可迭代对象