Scrapy五大核心组件简介
五大核心组件
scrapy框架主要由五大组件组成,他们分别是调度器(Scheduler),下载器(Downloader),爬虫(Spider),和实体管道(Item Pipeline),Scrapy引擎(Scrapy Fngine)
下面我们说说他们各自的作用:
调度器
用来接受引擎发过来的请求,由过滤器重复的url并将其压入队列中,在引擎再次请求的时候返回,可以想象成一个URL(抓取网页的网址或者说是链接)的优先队列,由他决定下一个要抓取的网址是什么,用户可以根据自己的需求定制调度器
下载器
下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源,Scrapy的下载器代码不会太复杂,但效率高(原因:Scrapy下载器是建立在twisted这个高效的异步模型上的)
爬虫
爬虫是主要干活的,用户最关心的部分, 它可以生成url, 并从特定的url中提取自己需要的信息, 即所谓的实体(Item). 用户也可以从中提取出链接, 让Scrapy继续抓取下一个页面.
实体管道
负责处理爬虫从网页中抽取的实体, 主要的功能是持久化实体、验证实体的有效性、清除不需要的信息. 当页面被爬虫解析后, 将被发送到项目管道, 并经过几个特定的次序处理数据.
引擎
Scrapy引擎是整个框架的核心。它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。对整个系统的数据流进行处理, 触发事务(框架核心).
工作流程
步骤详解:
1.spider中的url被封装成请求对象交给引擎(每一个对应一个请求对象)
2.引擎拿到请求对象之后,将全部交给调度器
3.调度器闹到所有请求对象后,通过内部的过滤器过滤掉重复的url,最后将去重后的所有url对应的请求对象压入到队列中,随后调度器调度出其中一个请求对象,并将其交给引擎
4.引擎将调度器调度出的请求对象交给下载器
5.下载器拿到该请求对象去互联网中下载数据
6.数据下载成功后会被封装到response中,随后response会被交给下载器
7.下载器将response交给引擎
8.引擎将response交给spiders
9.spiders拿到response后调用回调方法进行数据解析,解析成功后生成item,随后spiders将item交给引擎
10引擎将item交给管道,管道拿到item后进行数据的持久化存储
转载于:https://www.cnblogs.com/tianshuai1/p/10871961.html
Scrapy五大核心组件简介相关推荐
- 17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04
scrapy的五大核心组件 引擎(Scrapy) 对整个系统的数据流进行处理, 触发事务(框架核心). 调度器(Scheduler) 用来接受引擎发过来的请求. 由过滤器过滤重复的url并将其压入队列 ...
- 深度学习框架太抽象?其实不外乎这五大核心组件
许多初学者觉得深度学习框架抽象,虽然调用了几个函数/方法,计算了几个数学难题,但始终不能理解这些框架的全貌. 为了更好地认识深度学习框架,也为了给一些想要自己亲手搭建深度学习框架的朋友提供一些基础性的 ...
- controller怎么调用controller_SpringMVC五大核心组件及调用过程
Spring Web MVC 五大核心组件 DispatcherServlet 控制器入口 负责分发请求 HandlerMapping 负责根据请求 找到对应的控制器 Controller 真正处理请 ...
- jsp调用controller方法_SpringMVC五大核心组件及调用过程
Spring Web MVC 五大核心组件 DispatcherServlet 控制器入口 负责分发请求 HandlerMapping 负责根据请求 找到对应的控制器 Controller 真正处理请 ...
- 2.Hadoop 生态圈及核心组件简介
1.Hadoop 生态圈 Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠.高效.可伸缩等特点. Hadoop的核心组件是HDFS.MapReduce.随着处理任务不同,各种组件相继出 ...
- Hadoop 生态圈及核心组件简介Hadoop|MapRedece|Yarn
文章目录 大数据时代 Hadoop Hadoop概述 Hadoop特性优点 Hadoop国内外应用 Hadoop发行版本 Hadoop集群整体概述 HDFS分布式文件系统 传统常见的文件系统 数据和元 ...
- python scrapy 抓取脚本之家文章(scrapy 入门使用简介)
老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...
- Spring Cloud Netflix五大组件简介
微服务与微服务架构 微服务的优缺点 优点 缺点 Dubbo与Spring Cloud Spring Cloud Netflix Eureka Eureka的自我保护机制 Eureka和ZooKeepe ...
- springCloud五大核心组件介绍
目录 一.首先看一张springCloud的图片 二.简单介绍下什么是springCloud? 三.为了方便理解假设一个业务场景 四.SpringCloud核心组件Eureka(类似于zookeepe ...
最新文章
- 「分块」数列分块入门1 – 9
- python 选择多个文件夹_如何同时选择多个文件?
- 6.17 dokcer(一)Compose 简介
- 《Python Cookbook 3rd》笔记(1.11):命名切片
- LeetCode 623. 在二叉树中增加一行(BFS/DFS)
- 将sql 结果导出到文件
- Python高级——多进程(multiprocessing)
- python自动发送邮件_Python自动发送邮件
- Codeforces 295A. Greg and Array
- POJ_3273_Monthly_Expense_(二分,最小化最大值)
- html rtf转换,如何使用JavaScript将HTML转换为RTF
- PTA-C语言-解一元二次方程
- NSDate计算时间差
- 依据数据简单分析,发掘潜在客户
- 谈谈你对 MVC 模式的理解?
- 氚云徐平俊:低代码赛道热度陡升,今年增长目标200%
- 读书笔记:详解FPGA人工智能的驱动引擎(石侃)
- 终于有人把“计算机底层原理“整理出来了
- vs code 语法_VS Code上的Java现在具有语法模式和SonarLint支持
- grafana bar gauge使用问题
热门文章
- MySql 数据库 - 重置数据库、重置初始密码方法,数据库初始化方法,长时间不用忘记密码暴力解决方法
- Python 语法问题-module ‘pip._internal‘ has no attribute ‘pep425tags‘. 原因及解决办法,32位、64位查看pip支持万能方法
- [YTU]_2445(C++习题 输入输出--公用继承)
- Valid Sudoku
- warpAffine函数
- 最长回文子串-三种DP实现
- Python【每日一问】21
- Centos系统更改yum源为163
- laravel数据迁移的时候遇到的字符串长度的问题
- 11_短信发送器_快速回复页面实现