scrapy框架结构与工作原理
组件:
ENGINE:引擎,框架的核心,其他组件在其控制下协同工作。
SCHEDULER:调度器,负责对SPIDER提交的下载请求进行调度
DOWNLOADER:下载器,负责下载页面,发送HTTP请求/接收HTTP响应
SPIDER:爬虫,负责提取页面数据,并产生对新的页面的下载请求
MIDDLEWARE:中间件,负责对Request对象和Response对象进行处理
ITEM PIPELINE:数据管道,负责对爬取到的数据进行处理
数据流:
REQUEST:Scrapy中HTTP请求对象
RESPONSE:Scrapy中HTTP响应对象
ITEM : 从页面中爬取的一项数据
理解Scrapy爬虫工作原理,以对象在框架中流动的过程解释:
*当SPIDER要爬取URL地址的页面时,需使用该URL构造一个Request对象,提交给ENGINE;
*Request对象随后进入SCHEDULER按照某种算法进行排队,之后某个时间SCHEDULER将其出队,送往DOWNLOADER;
*DOWNLOADER根据Request对象中的URL地址发送一次HTTP请求到网站服务器,之后用服务器返回的HTTP响应构造一个Response对象,其中包含HTML文本
*Response对象最终会被传递到SPIDER的页面解析函数进行处理,从页面中提取的数据封装为ITEM提交给ENHINE,之后被送到ITEMPIPLINES进行处理,最终可能以某种形式存
储,另一方面页面解析函数还会从页面中提取URL,构造新的Request对象;
scrapy框架结构与工作原理的更多相关文章
- Scrapy 框架结构及工作原理
1.下图为 Scrapy 框架的组成结构,并从数据流的角度揭示 Scrapy 的工作原理 2.首先.简单了解一下 Scrapy 框架中的各个组件 组 件 描 述 类 型 EN ...
- Python爬虫-Scrapy框架的工作原理
Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...
- python爬虫学习之Scrapy框架的工作原理
一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, 网 ...
- python网络爬虫之scrapy 工程创建以及原理介绍
执行scrapy startproject XXXX的命令,就会在对应的目录下生成工程 在pycharm中打开此工程目录:并在Run中选择Edit Configuration 点击+创建一个Pytho ...
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
- HashMap的工作原理
HashMap的工作原理 HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- ThreadLocal 工作原理、部分源码分析
1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...
随机推荐
- Java实现蓝桥杯模拟存储转换
问题描述 在计算机存储中,15.125GB是多少MB? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...
- Java实现稳定婚姻问题
1 问题描述 何为稳定婚姻问题? 有一个男士的集合Y = {m1,m2,m3-,mn}和一个女士的计划X = {n1,n2,n3,-,nn}.每一个男士有一个排序的列表,把女士按照潜在的优先级进行排序 ...
- java实现祖冲之割圆法
祖冲之割圆法 南北朝时,我国数学家祖冲之首先把圆周率值 计算到小数点后六位,比欧洲早了1100年!他采 用的是称为"割圆法"的算法,实际上已经蕴含 着现代微积分的思想. 如图[1. ...
- Java实现微生物增殖
微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍). 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y. ...
- PAT 锤子剪刀布
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...
- 常见的几种java排序算法
一.分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅 ...
- Ubuntu16.04安装完成后首先更换源地址,加速下载
也可以,sudo pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple临时改变源地址下载先备份源文件sudo cp sources ...
- Vue3 新特性
一.vue3 为什么要重写 两个主要原因考虑重写vue新版本主要功能: 1.主流浏览器对新的JavaScript语言特性的普遍支持. 2.当前Vue代码库随着时间的推移而暴露出来的设计和体系架构问题. ...
- 如何控制excel单元格录入相同内容的次数?
我们知道如果要用Excel制作让人规范填写的模板,数据有效性,Excel2013版本及以上叫数据验证是必学的技能,正好这个案例可以讲讲数据有效性的一种“高级”设置方法. 加入我们需要实现下面的要求,价 ...
- Android学习笔记字符串资源
在新建好的Android项目里res目录下有个字符串资源文件 在xml文件中引用字符串资源 string.xml <resources> <string name="mot ...