Python爬虫基础之简单说一下scrapy的框架结构


Posted in Python onJune 26, 2021

scrapy 框架结构

思考

  • scrapy 为什么是框架而不是库?
  • scrapy是如何工作的?

项目结构

在开始爬取之前,必须创建一个新的Scrapy项目。进入您打算存储代码的目录中,运行下列命令:

注意:创建项目时,会在当前目录下新建爬虫项目的目录。

这些文件分别是:

  • scrapy.cfg:项目的配置文件
  • quotes/:该项目的python模块。之后您将在此加入代码
  • quotes/items.py:项目中的item文件
  • quotes/middlewares.py:爬虫中间件、下载中间件(处理请求体与响应体)
  • quotes/pipelines.py:项目中的pipelines文件
  • quotes/settings.py:项目的设置文件
  • quotes/spiders/:放置spider代码的目录

Scrapy原理图

Python爬虫基础之简单说一下scrapy的框架结构

各个组件的介绍

1.Engine。引擎,处理整个系统的数据流处理、触发事务,是整个框架的核心。

2.ltem。项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该ltem对象。

3.Scheduler。调度器,接受引擎发过来的请求并将其加入队列中,在引擎再次请求的时候将请求提供给引擎。

4.Downloader。下载器,下载网页内容,并将网页内容返回给蜘蛛。

5.Spiders。蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提结果和新的请求。

6.Item Pipeline。项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗、验证和存储数据。

7.Downloader Middlewares。下载器中间件,位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应。

8.Spider Middlewares。蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要处理蜘蛛输入的响应和输出的结果及新的请求。

Python爬虫基础之简单说一下scrapy的框架结构

数据的流动

  • Scrapy Engine(引擎):负责Spider、ltemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  • Scheduler(调度器):负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
  • Spider(爬虫)?负责处理所有Responses,从中分析提取数据,获取ltem字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
  • ltem Pipeline(管道):负责处理Spider中获取到的ltem,并进行进行后期处理(详细分析、过滤、存储等)的地方.
  • Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
  • Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

到此这篇关于Python爬虫基础之简单说一下scrapy的框架结构的文章就介绍到这了,更多相关scrapy的框架结构内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
gearman的安装启动及python API使用实例
Jul 08 Python
python操作sqlite的CRUD实例分析
May 08 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
python实现井字棋小游戏
Mar 04 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
详解python with 上下文管理器
Sep 02 Python
python入门教程之基本算术运算符
Nov 13 Python
超详细Python解释器新手安装教程
May 10 Python
Python爬虫基础之初次使用scrapy爬虫实例
Python上下文管理器Content Manager
Jun 26 #Python
仅用几行Python代码就能复制她的U盘文件?
总结几个非常实用的Python库
Jun 26 #Python
手残删除python之后的补救方法
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Python Pandas模块实现数据的统计分析的方法
Jun 24 #Python
You might like
PHP中文件上传的一个问题
2010/09/04 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
php生成图片验证码
2015/06/09 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
显示、隐藏密码
2006/07/01 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
解决layUI的页面显示不全的问题
2019/09/20 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
python web基础之加载静态文件实例
2018/03/20 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
你常见到的runtime exception
2016/09/05 面试题
如何做好总经理助理
2013/11/12 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
2014年接待工作总结
2014/11/26 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
唐山大地震的观后感
2015/06/05 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS
vue+element ui实现锚点定位
2021/06/29 Vue.js
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
TV动画《间谍过家家》公开PV
2022/03/20 日漫