简述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定时器使用示例分享
Feb 16 Python
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
Python安装官方whl包和tar.gz包的方法(推荐)
Jun 04 Python
实例讲解Python爬取网页数据
Jul 08 Python
pycharm安装和首次使用教程
Aug 27 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
如何真正的了解python装饰器
Aug 14 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 Python
python+opencv实现车道线检测
Feb 19 Python
python实现简易自习室座位预约系统
Jun 30 Python
python获取对象信息的实例详解
Jul 07 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
phpmail类发送邮件函数代码
2012/02/20 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
jquery连缀语法如何实现
2012/11/29 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python中decorator使用实例
2015/04/14 Python
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
python实现UDP协议下的文件传输
2020/03/20 Python
python 获取字典键值对的实现
2020/11/12 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
环境科学专业研究生求职信
2013/10/02 职场文书
恐龙的灭绝教学反思
2014/02/12 职场文书
小学安全汇报材料
2014/08/14 职场文书
新生入学欢迎词
2015/01/26 职场文书
2015年副班长工作总结
2015/05/15 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书