[scrapy] 2025-04-28 圈点320
摘要: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尝试一下抓取一个站,然后再回过头来看一下这个流程图,会感觉非常适用!