爬虫学习(十九)——Scrapy的学习及其使用
Scrapy框架的介绍
Scrapy,非常的强悍,通过python语言编写的,非常知名的爬虫框架
框架工作流程
框架流程图
基本工作流程;
1、引擎向spiders要url
2、引擎将要爬取的url给调度器(schedule)
3、调度器(schedule)会将url生成请求对象放入到指定的队列中
4、从队列中抛出一个请求
5、引擎将请求交给下载器进行处理
6、下载器发送请求,获取互联网数据
7、下载器将数据返回给引擎进行处理
8、引擎将数据再次给spiders
9、spiders使用xpath解析该数据,得到数据或url
10、spiders将数据或者url给到引擎
11、引擎判断spiders发送的是url函数数据,将数据交给管道 Item Pipeline,是url交给调度器处理
注意:
scrapy结束工作流程的条件是spiders传给引擎的只剩下数据的时候是流程工作结束的时候
Scrapy框架各部分职能
scrapy engine:负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等
Schedule(调度器):它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎
downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
Spiders(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
Item pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方
Scrapy框架的使用
基本使用:
1、关于scrapy框架,我们只需要关注spiders即可,爬虫的代码也是写到了spiders里面
2、管道是用来处理数据的,框架为我们留下接口,只需要实现接口即可
创建工程项目
1、通过指令创建项目:scrapy startproject xxx
2、通过指令创建文件
①cd 目标文件
②scrapy genspider name www.xxx.com
参数解释:
name:爬虫的名字,启动时根据爬虫的名字启动项目
allowed_domains:允许的域名,就是爬取的时候这个请求要不要发送,如果是允许该域名之下的url,就会发送,如果不是,则过滤掉这个请求,这是一个列表,可以写多个允许的域名
start_urls:爬虫的起始url,是一个列表,可以传递多个起始的url
def parse(self,response) :parse函数名是固定的,当收到下载数据的时候,就会自动调用这个方法;response是该函数的第二个参数,是一个响应对象,从该对象中回去HTML字符串,然后解析
注意:parse函数返回的必须是一个可迭代的对象
定制item.py
打印response对象
命令:scrapy crawl name
运行
命令:scrapy crawl name -o filename