「这是我参与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、引擎再把解析好后的数据传递给管道进行持久化存储;
模拟图