Scrapy中的五大核心组件

367 阅读2分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

Scrapy事Python开发中的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。其有五大组件构成:引擎、调度器、下载器、spider、管道。

引擎(Scrapy)

用来处理整个系统的数据流处理,触发事务(框架核心)

调度器(Scheduler)

用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回.可以想像成一个URL(抓取网页的网址或者说是 链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址

下载器(Downloader)

用于下载网页内容,并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)

爬虫(Spiders)

爬虫是主要干活的,用于从特定的网页中提联自己需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接让 Scrapy继续抓取下一个页面

项目管道(Pipeline)

负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解 析后,将被发送到项目管道,并经过几个特定的次序处理数据。

相互配合

五大组件之间是相互配合的以引擎为主要核心。

1、爬虫(spider)把所有的url封装成请求对象,然后传递给引擎,再有引擎传递给调度器;

2、调度器使用过滤器对请求对象中的url进行去重并存放进队列中;

3、这时引擎再从队列中调度出请求对象,传递给下载器;

5、下载器向互联网发起相应地址的请求获取response响应对象后返回给引擎,引擎再传递给爬虫(spider);

6、爬虫的parse方法解析数据,把数据封存进item中交给引擎;

7、引擎再把解析好后的数据传递给管道进行持久化存储;

模拟图

image.png