python爬虫基础(13:Scrapy框架之架构流程与目录)

框架

对于特别小的爬虫,一般直接编写就可以了,但一般面对一个项目级别的爬虫,都选择用框架

框架可以理解为一个 等你填坑的代码:

       1. 为你编写好那些必须的、重复的代码

       2. 为你模块化好每一个组件,自动建立组件之间的联系,这样就方便使用者清晰了解它的流程和各功能的定制

Scrapy框架架构和原理

Scrapy就是一个爬虫常用的框架,我们先来了解一下它的结构和原理:

组件图

组件介绍

Scrapy Engine: 这是引擎,负责Spiders、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等等!(像不像人的身体?)

Scheduler(调度器): 它负责接受引擎发送过来的requests请求,并按照一定的方式进行整理排列,入队、并等待Scrapy Engine(引擎)来请求时,交给引擎。

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

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

Item Pipeline:它负责处理Spiders中获取到的Item,并进行处理,比如去重,持久化存储(存数据库,写入文件,总之就是保存数据用的)

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

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

执行流程

引擎:Hi!Spider, 你要处理哪一个网站?

Spiders:我要处理23wx.com

引擎:你把第一个需要的处理的URL给我吧。

Spiders:给你第一个URL是XXXXXXX.com

引擎:Hi!调度器,我这有request你帮我排序入队一下。

调度器:好的,正在处理你等一下。

引擎:Hi!调度器,把你处理好的request给我,

调度器:给你,这是我处理好的request

引擎:Hi!下载器,你按照下载中间件的设置帮我下载一下这个request

下载器:好的!给你,这是下载好的东西。(如果失败:不好意思,这个request下载失败,然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载。)

引擎:Hi!Spiders,这是下载好的东西,并且已经按照Spider中间件处理过了,你处理一下(注意!这儿responses默认是交给def parse这个函数处理的

Spiders:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,这是我需要跟进的URL,将它的responses交给函数 def  xxxx(self, responses)处理。还有这是我获取到的Item。

引擎:Hi !Item Pipeline 我这儿有个item你帮我处理一下!调度器!这是我需要的URL你帮我处理下。然后从第四步开始循环,直到获取到你需要的信息,

注意!只有当调度器中不存在任何request了,整个程序才会停止,(也就是说,对于下载失败的URL,Scrapy会重新下载。)

以上就是Scrapy整个流程了。

(注:以上内容复制静觅的https://cuiqingcai.com/3472.html,写得很生动,就直接粘贴了)

Scrapy目录介绍

1.创建Scrapy项目

命令:scrapy startproject firstscrapy   (firstscrapy是自己命名的项目名称,出现以下内容代表成功)

2.项目目录简介:

用pycharm打开刚才创建的项目后,全部展开得到以下目录

----------fisrtscrapy           整个项目的容器

             -----------fisrtscrapy      项目文件

                          ----------spider         爬虫文件放这个目录里面,可以放很多,微博啊、知乎啊、豆瓣等

                                       ----------__init__.py:爬虫初始化文件,可以先不管

                          -----------__init__.py:项目初始化文件, 可以先不管

                          -----------items.py:定义要爬取数据的格式,这样统一的格式方便数据在各个模块间流转

                          -----------middlewares.py:中间件,对request等进行定制的模块,相当于一个包装部门,可以先不管

                          -----------pipilines.py:对爬到数据进行处理的模块,保存啊、去重啊、修改等

                          -----------settings.py:对各个模块和功能配置文件,里面全是注释,一般都是用到哪个功能了,就把哪儿的注释取消掉

             -----------scrapy.cfg       项目配置文件, 可以先不管

认识了Scrapy的架构、流程和目录后,我们下篇将用项目来演示编写流程

猜你喜欢

转载自blog.csdn.net/Jeeson_Z/article/details/82591625
今日推荐