为了账号安全,请及时绑定邮箱和手机立即绑定

最新Scrapy爬虫数据流架构图

标签:
Python 爬虫

下面分享下最新的Scrapy官网架构图,供各位参考。
图片描述

Scrapy中的数据流由执行引擎控制,如下所示:

  1. Engine获得从爬行器中爬行的初始请求。
  2. Engine在调度程序中调度请求,并请求下一次抓取请求。
  3. 调度程序将下一个请求返回到引擎。
  4. 引擎将请求发送到下载器,通过下载器中间件(请参阅process_request())。
  5. 页面下载完成后,下载器生成一个响应(带有该页面)并将其发送给引擎,通过下载器中间件(请参阅process_response())。
  6. 引擎从下载加载程序接收响应,并将其发送给Spider进行处理,并通过Spider中间件(请参阅process_spider_input())。
  7. Spider处理响应,并向引擎返回报废的项和新请求(要跟踪的),通过Spider中间件(请参阅process_spider_output())。
  8. 引擎将已处理的项目发送到项目管道,然后将已处理的请求发送到调度程序,并请求可能的下一个请求进行抓取。
  9. 这个过程重复(从第1步),直到调度程序不再发出请求。

Scrapy各组件介绍:

Scrapy引擎

引擎负责控制系统所有组件之间的数据流,并在某些操作发生时触发事件。

调度器 Scheduler

调度器接收来自引擎的请求,并对它们进行排队,以便在引擎请求它们时,将它们提供出来(也提供给引擎)。

下载器Downloader

下载器负责获取web页面并将其提供给引擎,而引擎又将这些页面提供给Spider。

spider

spider是由Scrapy用户编写的自定义类,用于解析响应并从其中提取项或其他请求。

Item Pipeline

Item Pipeline负责处理被Spider提取(或刮除)的条目。典型的任务包括清理、验证和持久性(比如将项目存储在数据库中)。

下载中间件)Downloader middlewares

Downloader中间件是位于引擎和下载器之间的特定钩子,当它们从引擎传递到下载器时,处理请求,以及从下载器传递到引擎的响应。
如果您需要执行以下操作之一,请使用下载器中间件:

  1. 在将请求发送到Downloader之前处理请求(即在Scrapy将请求发送到网站之前);
  2. 更改在传递给Spider之前收到响应;
  3. 发送一个新的请求,而不是将接收到的响应传递给爬行器;
  4. 将响应传递给Spider,而不获取web页面;
  5. 静静地丢掉一些请求。

spider中间件)Spider middlewares

Spider中间件是位于引擎和Spider之间的特定钩子,能够处理Spider输入(响应)和输出(项和请求)。
使用Spider中间件场景:

  1. Spider回调的后处理输出-更改/添加/删除请求或项;
  2. 后处理start_requests;
  3. 处理Spider异常;
  4. 对一些基于响应内容的请求调用errback而不是回调。

事件驱动的网络

Scrapy是基于用Python写的一个流行的事件驱动网络框架Twisted编写的。因此,它使用非阻塞(即异步)代码实现并发。

点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消