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 相关文章推荐
python文件的md5加密方法
Apr 06 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
Django中的Signal代码详解
Feb 05 Python
python sys.argv[]用法实例详解
May 25 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
Flask-WTF表单的使用方法
Jul 12 Python
Python全栈之列表数据类型详解
Oct 01 Python
linux环境下安装python虚拟环境及注意事项
Jan 07 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
浅析Django接口版本控制
Jun 26 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 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 session应用实例 登录验证
2009/03/16 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
详解PHP PDO简单教程
2019/05/28 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
再谈JavaScript线程
2015/07/10 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python妹子图简单爬虫实例
2015/07/07 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
python查看模块,对象的函数方法
2018/10/16 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python-opencv颜色提取分割方法
2018/12/08 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
python列表的逆序遍历实现
2020/04/20 Python
python自动化发送邮件实例讲解
2021/01/04 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
土木工程毕业生自荐信
2013/11/12 职场文书
物理教学随笔感言
2014/02/22 职场文书
2015年暑假生活总结
2015/07/13 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
银行求职信范文
2019/05/13 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android