scrapy学习之路(二)亲自尝试实验

[scrapy] 2024-04-28 圈点475

摘要:scrapy的流程图初步过一下就可以了,先用scrapy尝试一下一个小站的抓取,然后再回过头来看一下这个流程图,会感觉非常适用!重点是scrapy的各个文件作用和目录。

有了python的基础,借鉴了一些scrapy前辈的经验,马上看官方的scrapy的教程亲自动手实验一次吧!安装好scrapy的环境,一句代码就实现了基础的文件设置了。


一,scrapy文件目录解说。

scrapy.cfg scrapy基础配置

spiders目录,蜘蛛工作目录

-items.py  数据模型。

-middlewares.py 自己定义的中间件。默认是没有的,需要自己新建。

-pipelines.py 负责对spider返回数据的处理,比如入数据库等。

-settings.py 负责对整个爬虫的配置。

-__init__.py 空目录,可以不用管。

spiders目录 负责存放继承自scrapy的爬虫类。

-__init__.py 编写蜘蛛的地方,默认是这个。


二,scrapy的流程图:

官方的流程图太抽象了,借用一张前辈的图,借着数字,会非常清楚的明白。



Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的:

1、爬虫引擎获得初始请求开始抓取。 

2、爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。 

3、爬虫调度器返回下一个请求给爬虫引擎。 

4、引擎请求发送到下载器,通过下载中间件下载网络数据。 

5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎。 

6、引擎将下载器的响应通过中间件返回给爬虫进行处理。 

7、爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。 

8、引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。 

9、重复该过程(继续步骤1),直到爬取完所有的url请求。


上图展示了scrapy的所有组件工作流程,下面单独介绍各个组件

爬虫引擎(ENGINE) 

爬虫引擎负责控制各个组件之间的数据流,当某些操作触发事件后都是通过engine来处理。


调度器 

调度接收来engine的请求并将请求放入队列中,并通过事件返回给engine。


下载器 

通过engine请求下载网络数据并将结果响应给engine。


Spider 

Spider发出请求,并处理engine返回给它下载器响应数据,以items和规则内的数据请求(urls)返回给engine。


管道项目(item pipeline) 

负责处理engine返回spider解析后的数据,并且将数据持久化,例如将数据存入数据库或者文件。


下载中间件 

下载中间件是engine和下载器交互组件,以钩子(插件)的形式存在,可以代替接收请求、处理数据的下载以及将结果响应给engine。


spider中间件 

spider中间件是engine和spider之间的交互组件,以钩子(插件)的形式存在,可以代替处理response以及返回给engine items及新的请求集。


对于这个流程可以先过一下眼,先用scrapy尝试一下抓取一个站,然后再回过头来看一下这个流程图,会感觉非常适用!

scrapy  

感谢反馈,已提交成功,审核后即会显示