认识网路爬虫框架Scrapy及安装
认识Scrapy
随着网络爬虫的应用越来越多,互联网中涌现了一些网络爬虫框架,这些框架将网络爬虫
的一些常用功能和业务逻辑进行了封装。在这些框架的基础上,我们只需要按照需求添加
少量代码,就可以实现一个网络爬虫。 Scrapy 是目前比较流行的 Python 网络爬虫框架之一,可以帮助开发人员高效地开发网络爬虫程序
Scrapy框架简介
1 :Scrapy 是一个纯使用Python 语言开发、开源的
网络爬虫框架,用于抓取网站页面,并从页面中提
取结构化数据。Scrapy 最初是为了页面抓取而设
计的,可以简单、快速地从网站页面中提取所需的
数据,如今Scrapy 具备更加广泛的用途,可以被
应用到诸如数据挖掘、数据监测、自动化测试等领
域以及通用网络爬虫中。
2:Scrapy 是基于Twisted 框架开发的,Twisted 是
个流行的基于事件驱动的网络引擎框架,采用了
异步代码实现并发功能。Twisted 负责处理网络
通信,这样不仅加快页面的下载速度,而且减少手
动实现异步操作
3:Scrapy框架的功能如此强大,离不开其自身具备的如下优点
-
具有丰富的文档、良好的社区以及庞大的用户群体
-
Scrapy支持并发功能,可以灵活地调整并发线程的数量
-
采用可读性很强的XPath 技术解析网页,解析速度更加快速
-
具有统一的中间件,可以对数据进行过滤 支持Shell工具,方便开发人员独立调试程序
-
通过管道将数据存入数据库,灵活方便,且可以保存为多种行式
-
具有高度的可定制化功能,经过简单的改造后便可以实现具有特定功 能的网络爬虫。
优缺点:
虽然Scrapy框架功能强大,但自身仍存在几个缺点 自身无法实现分布式爬虫 去重效果差,极易消耗内存 无法获取采用JavaScript
技术进行动态染的页面内容 为了弥补Scrapy框架的这些缺点产生了许多框架插件进行解决 比如,Scrapy-Redis 库解决了
Scrapy 框架不支持分布式爬虫的 问题,Scrapy-Splash 库解决了 Scrapy 框架不支持JavaScript
动态渲染的问题等
框架架构
这些组件相互协作,共同完成整个采集数Scrapy框架的强大功能离不开众多组件的支撑,跟据的任务。 Scrapy 框架的架构图如下图所示:
Scrapy框架中包含的组件如图为:
Scrapy框架中包含的组件
(1) Scrapy Engine (引擎) : 负责 Scheduler、
Spiders 、ltem Pipeline 、
Downloader
这几个组件之间的通信,包括信号和数据的传递等
(2) Scheduler (调度器): 负责接收 Scrapy Engine 发送过来的 Requests (请求),并按
照一定的方式进行整理排列和入队,在Scrapy Engine需要时再次将请求交还给Scrapy
Engine
(3) Downloader:负责下载由 Scrapy Engine 发送的所有 Requests,并将其获取到的
Responses (响应)交还给 Scrapy Engine,由 Scrapy Engine 交给 Spiders 进行处理。
(4)Spiders:负责处理所有 Responses,从 Responses 中解析并提取ltems 封装的数据
并将需要跟进的 URL提交给 Scrapy Engine,再次进入Scheduler。
(5) ltem Pipeline:负责处理 Spiders 中获取的 ltems 封装的数据,并对这些数据进行后期
处理,如详细分析、过滤、存储等。
(6) Downloader Middlewares: 位于 Downloader和Scrapy Engine 之间,可以自定义扩
展下载功能的组件。
(7) Spider Middlewares: 位于 Spiders和Scrapy Engine 之间,可以自定义扩展 Scrapy
Engine和Spiders 中间通信的功能组件
Scrapy框架运作流程
操作步骤
Scrapy的安装!!!
Scrapy是一个第三方框架,如果要使用该框架开发 网络爬虫程序,需要先在计算机中安装该框架。以 Windows
7操作系统为例,分别对安装Scrapy 和 常见安装问题进行介绍。
由于Windows 7系统默认没有安装 Python ,所以在安装 Scrapy 框架之前,需要保证
Windows7系统下已经安装了 Python。在命令提示符窗口中使用 pip 工具安装Scrapy 框架
pip install scrapy==2.5.0
常见安装问题 在Windows7系统下安装Scrapy 框架常见的两个问题是缺少 Microsoft Visual C++ 14.0 组件和Twisted 安装出错 缺少Microsoft Visual C++ 14.0 组 在
错误提示:
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools".
http://landinghub.visualstudio.com/visual-cpp-build-tools
缺少Microsoft Visual C++ 14.0 组 当前电脑上缺少Microsoft Visual C+
- 14.0 组件,则可以单独安装该组件 在浏览器中进入下载Microsoft Visua C++ 14.0组件的页面。完成下载后可以 看到下载的安装包。双击安装包进行安装 在安装过程中全部保持默认设置即可 无须进行任何修改。 需要注意的是,我们在 Visual Studio
2015组件安装完成之后需要重启计算机
@Twisted 安装出
由错 Scrapy框架使用了异步网络框架 Twisted,所以在安装Scrapy 的过程中需要安装
Twisted 。若没有安装Teisted,则出现以下信息
fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory
error: command 'C: Program Files (x86)Microsoft Visual Studio 14.0VCUBIN\x86 amd64
cl.exe' failed with exit status 2
若未要装 Twisted,则可以单独安装。在浏览 器中访问 Twisted 的下载页面 在Twisted下载页面中选择适合自己电脑的安
装包进行安装。
pip install Twisted 20.3.0 cp36 cp36m win32.whl