scrapy-爬取流程
什么时候到pipeline,什么 时候到spider这个就不说了,这个是框架跳转到的流程
关键是访问之前要登录怎么办,数据还要注入呢
所以这次我们来关注一下网页下载前的流程
start_urls
这是个列表,里面就是爬取的链接了
我们前面爬取就只是写了一个,但是其实可以写多个
链接又是怎么访问的呢
parse_start_url
这东西你就可以手动提取链接返回了
start_requests
这东西你就得好好注意了
从入参就可以发现,这东西必然和响应没关系
因为这个是请求之前的东西
start_urls就是通过这个方法,把链接变成请求,然后才有后续故事的
parse
默认就是他来解析的,大家都知道
所以流程是这样的
0. start_urls:链接地址
1. start_reqeusts:链接变请求,开始访问
2. paser_start_url:创建新请求
3. parse:解析网页
这是默认情况,但是,有一个东西那就很强大了
callback
请求的指定解析方法
首先明确几点
1. 任意返回:item或者Request随便返回,调度器会自动识别和下发
2. 任意指定:解析方法在于callback,默认parse,但是可以任意指定
所以,其实我们可以不按照它规定的流程走,解析方法也不一定只有一个
多个解析方法的话,同一个网页我们就可以爬取多种组合的资源,而不是只有一种
换言之,item不一定所有的数据都要填充完毕
item的清单,我们可以部分进行组合,指定多样的解析,一个网页同时分两步,爬取两类资源
自定义流程
0. 所以,工程里面可以不要start_urls
1. 我们自己重写start_reqeusts,构造请求,指定解析方法,比如login,然后返回请求
2. 然后login中进行参数的注入,完成登录操作,再指定解析方法,比如parse_source,返回新请求
3. 最后,parse_source,抓取数据
基于这两点的配合
1. item和Request的自动识别
2. callback的任意指定
只要进门了start_reqeusts,后面的流程 自己任意定义
不论跳转还是参数注入
同时,不要忘记新发现并且可扩展的一个东西--数量
1. 请求的数量
2. 资源的数量
所以
1. start_urls中可以指定多个链接
2. start_request中可以构造多个请求
3. parse可以添加多个请求
4. parse可以解析多份资源
5. login中可以更换用户登录,作为新屏蔽方式
很简单,但是扩展性很强大,自定义程度灰常高
在进行登录爬取一类任务中不可或缺,十分重要
最后一句,别忘了cookie,要不登录一次后面都不认得你了
登录爬取值得试试