图解scrapy爬虫框架

大家好,我是阿爬!这里是讲述阿爬和阿三爬虫故事的爬友圈

阿爬今天来潜聊一下scrapy爬虫框架的架构和执行流程

1

为什么要使用它?

 

1、基于异步处理:Scrapy 使用异步处理机制,可以高效地处理并发请求和响应。

2、可扩展性强:通过使用中间件、管道和插件等机制,可以方便地定制和扩展 Scrapy 的功能,满足各种爬取需求。

3、分布式支持:Scrapy 支持使用分布式架构进行爬取,可以将任务分发给多个爬虫节点,提高抓取效率。

4、自动化处理:Scrapy 提供了丰富而灵活的机制,如自动重试、自动限速、自动处理 cookies 和 sessions 等,简化了爬虫开发过程。

2

架构与核心


 

1、Spiders (爬虫)

Spiders 是编写网站爬取逻辑的主要部分。

每个 Spider 定义了如何从特定的网站(或一些网站)爬取数据。Spiders 使用选择器(Selector)来解析网页内容,并从中提取所需的数据。

2、Engine (引擎)

Engine 是 Scrapy 的核心调度器。

它负责控制整个爬取过程,包括调度、执行和监控 Spider。

Engine 还协调其他组件(如 Spider、Downloader 和 Scheduler)之间的工作。

3、Scheduler (调度器)

Scheduler 负责存储待处理的请求,并根据一定策略提供给 Engine。

它维护一个请求队列,并在需要时将其提供给 Downloader 下载网页。

4、Downloader (下载器)

Downloader 负责下载并返回网页的响应。

它接收从 Scheduler 获取的请求,并将响应返回给 Engine 进行进一步处理。

5、Item Pipelines (管道)

Items 定义了待抓取的数据结构,类似于字典,是保存爬取到的数据的容器。

我们可以在 Items 中定义字段及其类型,以便更好地组织和处理数据。

Pipelines 负责处理 Spider 提取的数据。

在 Pipeline 中可以定义多个数据处理步骤,例如数据清洗、去重、存储到数据库等。

Spider 提取的每个 Item 都会经过 Pipeline 的处理流程。

3

执行流程

 

1、执行过程(爬虫 —> 引擎 —> 调度器)

第一步,当我们在爬虫文件构建了一个request对象,会经过spiderMiddleware中间件处理,处理完传给引擎

第二步,由引擎传给调度器,调度器会把request对象存入任务队列中以及去重集合中

 

2、执行过程(调度器 —> 引擎 —>下载器)

第一步,调度器取出一个request交给引擎

第二步,再由引擎经过downloadMiddleware中的process_request函数处理后交给下载器

 

3、执行过程(下载器 —> 引擎 —> 下载器)

第一步,下载器拿到response后会经过downloadMiddleware中的process_reponse函数处理后传给引擎

第二步,再由引擎经过spiderMiddleware处理给到爬虫

 

4.执行过程(爬虫 —> 引擎 —> 管道/ 调度器)

第一步,爬虫文件解析到需要的数据后会把数据存在Item中并传给引擎

第二步,由引擎传给管道,管道负责储存数据到相关数据库或文档中。这一步流程中如果爬虫有request对象,会重复流程1。

在实际开发中,我们更多的是写一些中间件来处理请求参数加密、cookie加密、请求头加密等情况,

在管道类中封装一些数据库操作。

希望大家能更好的理解scrapy框架,掌握执行流程,便于日后快速上手。

下期我们继续聊聊scrapy的实操应用。

特别声明:本文章只作为学术研究,作为其他不法用途;如有侵权请联系作者删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值