简述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 Socket之客户端和服务端握手详解
Sep 18 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
python 常见字符串与函数的用法详解
Nov 23 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python cv2截取不规则区域图片实例
Dec 21 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
Python计算公交发车时间的完整代码
Feb 12 Python
python中的测试框架
Nov 13 Python
Matplotlib配色之Colormap详解
Jan 05 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
php创建session的方法实例详解
2015/01/27 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
python统计多维数组的行数和列数实例
2018/06/23 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
结构工程个人自荐信范文
2013/11/30 职场文书
我未来的职业规划范文
2014/01/11 职场文书
简历中的自我评价范文
2014/02/05 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
助学贷款贫困证明
2014/09/23 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书