简述python Scrapy框架


Posted in Python onAugust 17, 2020

一、Scrapy框架简介

Scrapy是用纯Python实现一个为了爬取网站数据,提取结构性数据而编写的应用框架,用途非常广泛。利用框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常的方便。它使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。Scrapy是Python世界里面最强大的爬虫框架,它比BeautifulSoup更加完善,BeautifulSoup可以说是轮子,而Scrapy则是车子,不需要关注太多的细节。

二、Scrapy原理

1.ScrapyEngine(引擎):负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号数据传递等。

2.Scheduler(调度器):它负责接受引擎发送过来的request请求,并按照定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

3.Downloader(下载器):负责下载ScrapyEngine发送的所有requests请求,并将其获取到的responses交还给ScrapyEngine,由引擎交给Spider来处理。

4.Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取ltem字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler。

5.ItemPipeline(管道):它负责处理Spider中获取到的ltem,并进行进行后期处理,详细分析,过滤,存储等的地方。

6.DownloaderMiddlewares(下载中间件):它是一个可以自定义扩展下载功能的组件。

7.SpiderMiddlewares(Spider中间件):它是一个可以自定扩展和操作引擎和Spider中间通信的功能组件比如进入Spider的Responses,和从Spider出去的Requests。

三、创建Scrapy项目

新建项目命令:

scrapy startproject xxx

在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中,运行下列命令:

scrapy startproject xxx

其中,xxx为项目名称,可以看到将会创建一个xxx文件夹,目录结构大致如下:

简述python Scrapy框架

四、创建爬虫

创建爬虫的命令:

scrapy genspider 爬虫名字网站域名

应当注意的是爬虫名字不要和项目名字一-样,网站域名是允许爬虫采集的域名如,baidu. com,zhihu. com。创建后python文件如下:

简述python Scrapy框架

五、总结

Scrapy框架相当于一辆造好的车子,只要我们会开,我们就可以利用这辆车子去到任意想去的地方。通常我们使用的request的方法就相当于在出发前再去造一辆车子,这是相当麻烦的。学好Scrapy,对于网上80%的网站我们都可以进行爬取。

以上就是简述python Scrapy框架的详细内容,更多关于python Scrapy框架的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
轻松掌握python设计模式之访问者模式
Nov 18 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
Feb 10 Python
python实现读Excel写入.txt的方法
Apr 29 Python
分享vim python缩进等一些配置
Jul 02 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
python+selenium实现自动抢票功能实例代码
Nov 23 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
Python调用C/C++的方法解析
Aug 05 Python
python使用多线程查询数据库的实现示例
Aug 17 #Python
python使用建议与技巧分享(一)
Aug 17 #Python
Python2.6版本pip安装步骤解析
Aug 17 #Python
python中pathlib模块的基本用法与总结
Aug 17 #Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 #Python
详解python datetime模块
Aug 17 #Python
python实现梯度下降算法的实例详解
Aug 17 #Python
You might like
PHP 数组入门教程小结
2009/05/20 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php调用C代码的实现方法
2014/03/11 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
chrome调试javascript详解
2015/10/21 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
原生js实现轮播图
2017/02/27 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python实现二叉堆
2016/02/03 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
简单的JAVA编程面试题
2013/03/19 面试题
小学生操行评语大全
2014/04/22 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
医学检验专业自荐信
2014/09/18 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
Javascript设计模式之原型模式详细
2021/10/05 Javascript
Flink 侧流输出源码示例解析
2022/09/23 Servers