Scrapy_Spider的用法
2020-01-04 本文已影响0人
以此怀念
一、Spider运行流程:
-
1.定义爬取网站的动作
-
2.分析爬取下来的网页
-
3.以初始的URL初始化Request,并设置回调函数。当该Request成功请求并返回时,Request生成并作为参数传给该回调函数
-
4.在回调函数内分析返回的网页内容.返回结果有两种形式,一种是解析到的有结果返回字典Item对象,她们可以讲过处理后(或直接)保存。另一种是解析得到下一个(如下一页)链接,可以利用此链接构造Request并设置新的回调函数,返回Request等待后续调度。
-
5.如果返回的是字典或Item对象,我们可以通过Feed Exports等组件将返回结果存入到文件.如果设置了Pipeline的话,我们可以使用Pipeline处理(如过滤、修正等)并保存.
-
6.如果返回的是Request,那么Request执行成功得到Response之后,Response会被传递给Request中定义的回调函数,在回调函数中我们可以再次使用选择器来分析新得到的网页内容,并根据分析的数据生成Item。
二、Spider类分析
我们定义的Spider是继承自scrapy.spiders.Spider。这个类是最简单最基本的Spider类,其他Spider必须继承这个类。还有后面一些特殊的Spider类也都是继承自它。
scrapy.spiders.Spider这个类提供了start_requests()方法的默认实现,读取并请求start_urls属性,并根据返回的结果调用parse()方法解析结果。它还有如下一些属性:
- name: 爬虫名称,是定义Spider名字的字符串。Spider的名字定义了Scrapy如果定位并初始化Spider,它必须是唯一的。不过可以生成多个相同的Spider实例,数量没有限制。name是SPider最重要的属性。如果Spider爬取单个网站,一个常见的做法是以该网站的域名来命名Spider。
- allowed_domains:允许爬取的域名,可选配置,不在此范围的链接不会被跟进爬取。
- start_urls:它是其实URL列表,当我们没有实现start_requests()方法时,默认会从这个列表开始抓取。
- custom_settings:它是一个字典,是专属于本Spider的配置,此设置会覆盖项目全局的设置,必须在初始化前被更新,必须定义成类变量。
- crawler:它是由from_crawler()方法设置的,代表的是本Spider类对应的Crawler对象。Crawler对象包含了很多项目组件,利用它我们可以获取项目的一些配置信息,如最常见的获取项目的设置信息,即Settings。
- settings:它是一个Settings对象,利用它我们可以直接获取项目的全局设置变量。
除了基础属性,Spider还有一些常用的方法。
- start_requests():此方法用于生成初始请求,它必须返回一个可迭代对象。此方法会默认使用start_urls里面的URL来构造Request,而且Request是GET请求方式。如果我们想在启动时以POST方式访问某个站点,可以直接重写这个方法,发送POST请求时使用FormRequest即可。
- parse():当Response没有指定回调函数时,该方法会默认呗调用。它负责处理Response,处理返回结果,并从中提取出想要的数据和下一步的请求,然后返回。该方法需要返回一个包含Request或Item的可迭代对象。
- closed():当Spider关闭时,该方法会被调用,在这里一般会定义释放资源的一些操作或其他收尾操作。