文章目录
- 组件 说明 Engine引擎(大总管) 用来处理整个系统的数据流处理,触发事务,是整个框架的核心。 Item 项目 它定义了爬取结果的数据结构,爬取的数据会被赋值成该对象。 Scheduler 调度器 用来接受引擎发过来的请求并加入队列中,并在引擎再次请求的时候提供给引擎,可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 Downloader 下载器 用于下载网页内容,并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的 Spiders 蜘蛛 是开发人员自定义的类,里面有爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。 Item Pipeline 项目管道 在items被提取后负责处理它们,它的主要任务是清洗、验证和存储数据。 Downloader Middlewares 下载器中间件 位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。(用的最多,加头,加代理,加cookie,集成selenium) Spider Middlewares 蜘蛛中间件 位于引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛输入的响应和输出的结果及新的请求。
- 数据流由引擎控制 Engine 首先打开一个网站,找到处理该网站的 Spider 并向该 Spider 请求第一个要爬取的 URL。 Engine 从 Spider 中获取到第一个要爬取的 URL 并通过 Scheduler 以 Request 的形式调度。 Engine 向 Scheduler 请求下一个要爬取的 URL。 Scheduler 返回下一个要爬取的 URL 给 Engine,Engine 将 URL 通过 Downloader Middlewares 转发给 Downloader 下载。 一旦页面下载完毕, Downloader 生成一个该页面的 Response,并将其通过 Downloader Middlewares 发送给 Engine。 Engine 从下载器中接收到 Response 并通过 Spider Middlewares 发送给 Spider 处理。 Spider 处理 Response 并返回爬取到的 Item 及新的 Request 给 Engine。 Engine 将 Spider 返回的 Item 给 Item Pipeline,将新的 Request 给 Scheduler。 重复第二步到最后一步,直到 Scheduler 中没有更多的 Request,Engine 关闭该网站,爬取结束。 通过多个组件的相互协作、不同组件完成工作的不同、组件对异步处理的支持,Scrapy 最大限度地利用了网络带宽,大大提高了数据爬取和处理的效率。
- https://www.cnblogs.com/miaoning/p/11626563.html | 图好,有函数说明 https://www.cnblogs.com/baohanblog/p/12675490.html | 架构组件说清楚了

最近有了解Scrapy相关知识,以前初次接触感觉麻烦就转向了request,看来一圈都有点懵逼,后来找到了架构图就基本理解了整个运作逻辑。
| 组件 | 说明 |
|---|---|
| Engine引擎(大总管) | 用来处理整个系统的数据流处理,触发事务,是整个框架的核心。 |
| Item 项目 | 它定义了爬取结果的数据结构,爬取的数据会被赋值成该对象。 |
| Scheduler 调度器 | 用来接受引擎发过来的请求并加入队列中,并在引擎再次请求的时候提供给引擎,可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址 |
| Downloader 下载器 | 用于下载网页内容,并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的 |
| Spiders 蜘蛛 | 是开发人员自定义的类,里面有爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。 |
| Item Pipeline 项目管道 | 在items被提取后负责处理它们,它的主要任务是清洗、验证和存储数据。 |
| Downloader Middlewares 下载器中间件 | 位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。(用的最多,加头,加代理,加cookie,集成selenium) |
| Spider Middlewares 蜘蛛中间件 | 位于引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛输入的响应和输出的结果及新的请求。 |
- 目的:对请求和爬取的项目将那些在处理
- 功能:修改、丢弃、新增请求或爬取项
- 目的: 实施Engine、Scheduler和Downloader之间进行用户可配置的控制
- 功能: 修改、丢弃、新增请求或响应。
数据流由引擎控制
- Engine 首先打开一个网站,找到处理该网站的 Spider 并向该 Spider 请求第一个要爬取的 URL。
- Engine 从 Spider 中获取到第一个要爬取的 URL 并通过 Scheduler 以 Request 的形式调度。
- Engine 向 Scheduler 请求下一个要爬取的 URL。
- Scheduler 返回下一个要爬取的 URL 给 Engine,Engine 将 URL 通过 Downloader Middlewares 转发给 Downloader 下载。
- 一旦页面下载完毕, Downloader 生成一个该页面的 Response,并将其通过 Downloader Middlewares 发送给 Engine。
- Engine 从下载器中接收到 Response 并通过 Spider Middlewares 发送给 Spider 处理。
- Spider 处理 Response 并返回爬取到的 Item 及新的 Request 给 Engine。
- Engine 将 Spider 返回的 Item 给 Item Pipeline,将新的 Request 给 Scheduler。
- 重复第二步到最后一步,直到 Scheduler 中没有更多的 Request,Engine 关闭该网站,爬取结束。
数据流由引擎控制
通过多个组件的相互协作、不同组件完成工作的不同、组件对异步处理的支持,Scrapy 最大限度地利用了网络带宽,大大提高了数据爬取和处理的效率。
