简述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合并两个字典的常用方法与效率比较
Jun 17 Python
Python 描述符(Descriptor)入门
Nov 20 Python
Python实现发送QQ邮件的封装
Jul 14 Python
Python基于tkinter模块实现的改名小工具示例
Jul 27 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
python中scikit-learn机器代码实例
Aug 05 Python
Python BS4库的安装与使用详解
Aug 08 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
NumPy 基本切片和索引的具体使用方法
Apr 24 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
使用Pytorch训练two-head网络的操作
May 28 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 学习资料零碎东西
2010/12/04 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
python进阶教程之词典、字典、dict
2014/08/29 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
Python如何在bool函数中取值
2020/09/21 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
北大自主招生自荐信
2013/10/19 职场文书
高中生职业规划范文
2014/03/09 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
红色革命电影观后感
2015/06/18 职场文书
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技