scrapy爬虫框架结构
一、5+2结构:
- Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等
- Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
- Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎
- Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
- Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方
- Downloader Middlewares(下载中间件):是一个可以自定义下载功能的组件
- Spider Middlewares(Spider中间件):是一个可以自定操作引擎和Spider中间通信的功能组件
二、Scrapy请求发出去的流程
1.首先爬虫将需要发送请求的url(requests)经引擎交给调度器(上图1)
2.经Engine交给Scheduler(上图2),Scheduler排序处理后再由Engine,DownloaderMiddlewares(有User_Agent, Proxy代理)交给Downloader(上图3--4)
3.Downloader向互联网发送请求,并接收下载响应.将响应经ScrapyEngine,可选交给Spiders(上图5--6)
4.Spiders处理response,提取数据并将数据经Engine交给ItemPipeline保存(上图7--8)
5.Spider发现新的url经Engine再交给Scheduler进行下一个循环。直到无Url请求程序停止结束(上图7--8)
scrapy爬虫框架结构相关推荐
- python 爬虫 scrapy 和 requsts 哪个快_Scrapy爬虫框架结构以及和Requests库的比较
爬虫框架 *爬虫框架是实现爬虫功能的一个软件结构和功能组件集合 *爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫 Scrapy爬虫框架结构 "5+2"结构 Spiders(用户 ...
- python scrapy框架爬虫_Python Scrapy爬虫框架
Scrapy爬虫框架结构: 数据流的3个路径: 一: 1.Engine从Spider处获得爬取请求(Request) 2.Engine将爬取请求转发给Scheduler,用于调度 二: 3.Engin ...
- 【scrapy爬虫】了解Scrapy+爬虫豆瓣电影Top250信息
Scrapy爬虫框架 scrapy是什么 它是一个快速功能强大的开源网络爬虫框架 Github地址:https://github.com/scrapy/scrapy 官网地址:https://scra ...
- Scrapy爬虫框架介绍
一.爬虫框架简介 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合. 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫. 二.Scrapy爬虫框架结构 五个模块: spiders(爬虫):解析do ...
- Python 网络爬虫笔记9 -- Scrapy爬虫框架
Python 网络爬虫笔记9 – Scrapy爬虫框架 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Py ...
- python创建scrapy_Python爬虫教程-31-创建 Scrapy 爬虫框架项目
首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Scrapy 爬虫框架项目的创建0.打开[cmd] 1.进入你要使用的 Anaconda 环境1 ...
- 手把手教你如何新建scrapy爬虫框架的第一个项目(下)
前几天小编带大家学会了如何在Scrapy框架下创建属于自己的第一个爬虫项目(上),今天我们进一步深入的了解Scrapy爬虫项目创建,这里以伯乐在线网站的所有文章页为例进行说明. 在我们创建好Scrap ...
- scrapy爬虫框架初相识
自己新建一个文件夹: 然后执行命令: scrapy startproject python123demo 查看里面的东西: D:\pythonscrapy>tree /f >.txt 卷 ...
- Python网络爬虫之scrapy爬虫的基本使用
Scrapy爬虫的数据类型: 1. Request类:向网络上提交请求,跟requests库里的不是一个类型!2. Responce类:封装爬取内容3. ITEM:spider封装类 Responce ...
- Python之Scrapy爬虫的常用命令
Scrapy爬虫的常用命令: Scrapy命令行是为持续运行设计的专业爬虫框架. 常用的Scrapy,命令有三个: startproject genspider crawl Scrapy为什么采用命令 ...
最新文章
- 福利 | 从生物学到神经元:人工神经网络 ( ANN ) 简介
- PHP之高性能I/O框架:Libevent(二)
- Android之ScrollView
- 飞鸽传书 2010Beta2.0正式版预计本月内即可上线
- 在vue中实现picker样式_基于vue的颜色选择器vue-color-picker
- SQL Server维护计划–好处,功能和特性
- 对抗模拟浏览器的DDoS攻击
- 关于text-indent
- java 静态内部类 内部类_Java中内部类和静态内部类的区别
- C# List最大值最小值问题 List排序问题 List Max/Min
- Atitit 修改密码的功能流程设计 attilax总结
- android与单片机wifi通信原理图,基于单片机的wifi模块原理图分析
- python中pandas数据分析基础3(数据索引、数据分组与分组运算、数据离散化、数据合并)...
- 海外邮件收发阻碍多?网易企业邮箱为您保驾护航【网易企业邮箱怎么申请】
- 初生牛犊不怕虎!开发不足一年的Android实习生在大厂横冲直撞后,手握多份offer,特此分享!
- win8 配置要求
- 鼠标处显示坐标 html,cesium的鼠标事件(最基础的显示鼠标位置坐标)
- 基于Matlab的三角函数方程组解算方法
- NACOS2.1. 最新版本启动报错Caused by: java.sql.SQLSyntaxErrorException: Unknown column ‘encrypted_data_
- aliyun cloud ide
热门文章
- python爬取全球历年GDP数据
- 高一物理必修第二册公式整理
- 从IOE看云行业的潜力
- ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER
- unity 摄像头跟着鼠标移动_lwj_unity_模拟第一人称摄像机前后左右移动、摄像机随鼠标移动旋转、鼠标点击添加物体...
- 我把视频变成链接_H5中加视频?这才是正确姿势
- 正则表达式 匹配一个数字
- O(n*lgn)时间复杂度的逆序对统计算法实现思想
- 微信小程序选择开始时间和结束时间控件
- 4.6.2 IPv6的地址