Scrapy (网络爬虫框架)入门

一.Scrapy 简介:

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

二.Scrapy框架

1.框架图

绿色线是数据流向

2.框架图讲解:

功能讲解:

 

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

3.代码执行顺序:

 

①SPIDERS的yeild将request发送给ENGIN
②ENGINE对request不做任何处理发送给SCHEDULER
③SCHEDULER( url调度器),生成request交给ENGIN
④ENGINE拿到request,通过MIDDLEWARE进行层层过滤发送给DOWNLOADER
⑤DOWNLOADER在网上获取到response数据之后,又经过MIDDLEWARE进行层层过滤发送给ENGIN
⑥ENGINE获取到response数据之后,返回给SPIDERS,SPIDERS的parse()方法对获取到的response数据进行处理,解析出items或者requests
⑦将解析出来的items或者requests发送给ENGIN
⑧ENGIN获取到items或者requests,将items发送给ITEM PIPELINES,将requests发送给SCHEDULER

 

4.个人理解,代码执行过程:

代码从爬虫文件,spider开始爬取 > 爬取的网络请求发送给引擎 > 引擎分给调度器 > 调度器将请求放入队列中 > 分给下载器去处理request并获取response > 下载器将response发送给引擎,引擎又分配给爬虫spider处理,(处理数据的是爬虫文件中的parse方法),处理之后的数据 > 交给管道pipelines去存储,在处理过程中 > 有新的请求,会再次执行上述过程

 

三 . Scrapy框架下建立爬虫项目

在linux系统平台下:

在终端执行命令:

1.创建项目:scrapy startproject  项目名称

2.创建爬虫:首先进入刚刚创建的项目目录下

                 接着执行:scrapy genspider  爬虫名  爬取的域名

3.执行怕爬虫:scrapy  crawl  爬虫名称

下图为常见命令:

 

四.配置pycharm 让Scrapy项目直接运行

步骤:1.首先在item.py配置,爬取的目标字段

格式:字段=scrapy.Field()

2.编写爬虫文件

3.编写pipelines管道文件

4.在settings.py中设置下

该字段右True改成False

在setting中打开ITEN_PIPELINES

 

5.在终端运行:执行爬虫文件的命令:scrapy  crawl  爬虫名称

就可以爬取到需要的数据,并保存在pipelines中设置的文件中

 

以上是scrapy的简单了解,接下来可以使用scrapy结合pycharm,进行网络爬虫的尝试了

posted @ 2018-07-12 17:24  [流苏]  阅读(367)  评论(0编辑  收藏  举报