爬虫学习(十九)——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

posted @ 2019-02-25 21:28 石桥浪子 阅读(...) 评论(...) 编辑 收藏