简述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实现斐波那契递归函数的方法
Sep 08 Python
python中for语句简单遍历数据的方法
May 07 Python
浅谈python数据类型及类型转换
Dec 18 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 Python
Django实现聊天机器人
May 31 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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性能的21种方法介绍
2013/06/25 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
PHP加密解密实例分析
2015/12/25 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
js简单抽奖代码
2015/01/16 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
angular动态表单制作
2018/02/23 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python数据结构之翻转链表
2017/02/25 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
Python socket处理client连接过程解析
2020/03/18 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
中学生自我评价范文
2015/03/03 职场文书
经费申请报告范文
2015/05/18 职场文书