简述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 11 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python虚拟环境完美部署教程
Aug 06 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
python实现输入任意一个大写字母生成金字塔的示例
Oct 27 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
kafka-python 获取topic lag值方式
Dec 23 Python
pygame实现弹球游戏
Apr 14 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
Python破解极验滑动验证码详细步骤
May 21 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实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
tp5.1 框架join方法用法实例分析
2020/05/26 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
python使用str & repr转换字符串
2016/10/13 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
python列表的逆序遍历实现
2020/04/20 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
中科软笔试题和面试题
2014/10/07 面试题
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
护士医德医风自我评价
2014/09/15 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
JVM之方法返回地址详解
2022/02/28 Java/Android