Spider
4. Spiders的使用
-
在Scrapy中,要抓取网站的链接配置、抓取逻辑、解析逻辑里其实都是在Spider中配置的。
-
Spider要做的事就是有两件:
定义抓取网站的动作
和解析爬取下来的网页
。
4.1 Spider运行流程:
-
整个抓取循环过程如下所述:
-
以初始的URL初始化Request,并设置回调函数。请求成功时Response生成并作为参数传给该回调函数。
-
在回调函数内分析返回的网页内容。返回结果两种形式,一种为字典或Item数据对象;另一种是解析到下一个链接。
-
如果返回的是字典或Item对象,我们可以将结果存入文件,也可以使用Pipeline处理并保存。
-
如果返回Request,Response会被传递给Request中定义的回调函数参数,即再次使用选择器来分析生成数据Item。
-
-
Spider
类这个提供了start_requests()
方法的默认实现,读取并请求start_urls
属性,并调用parse()
方法解析结果。 -
Spider
类的属性和方法:-
name
:爬虫名称,必须唯一的,可以生成多个相同的Spider实例,数量没有限制。 -
allowed_domains
: 允许爬取的域名,是可选配置,不在此范围的链接不会被跟进爬取。 -
start_urls
: 它是起始URL列表,当我们没有实现start_requests()方法时,默认会从这个列表开始抓取。 -
custom_settings
: 它是一个字典,专属于Spider的配置,此设置会覆盖项目全局的设置,必须定义成类变量。 -
crawler
:它是由from_crawler()方法设置的,Crawler对象包含了很多项目组件,可以获取settings等配置信息。 -
settings
: 利用它我们可以直接获取项目的全局设置变量。 -
start_requests()
: 使用start_urls里面的URL来构造Request,而且Request是GET请求方法。 -
parse()
: 当Response没有指定回调函数时,该方法会默认被调用。 -
closed()
-