![](https://csdnimg.cn/release/download_crawler_static/86315341/bg1.jpg)
版权所有 张玉帅 Python 网络爬虫
第四周:网络爬虫之框架
第一讲:Scrapy 爬虫框架
1.安装
执行 pip install scrapy 命令。
安装后小测:执行 scrapy -h
2.Scrapy 爬虫框架结构
爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。爬虫框架是一个半成品,能
够帮助用户实现专业网络爬虫。
Scrapy 爬虫包括 5+2 个结构,如图 1 所示。
图 1
它包括三条主要的数据流路径如图中的箭头所示:
(1)从 SPIDERS 发送 REQUESTS 到 ENGINE 模块,然后到 SCHEDULER,SCHEDULER
负责对请求进行调度。
(2)SCHEDULER 发送 REQUESTS 到 ENGINE,再将 REQUESTS 传送到 DOWNLOADER
模块。然后 DOWNLOADER 返回相应通过 ENGINE 到 SPIDERS。
(3)从 SPIDERS 获取到路径(2)的 RESPONSE,处理之后发送 ITEMS/REQUESTS 到
ENGINE,然后 ITEMS 传递给 ITEM PIPELINES,REQUESTS 传递给 SCHEDULER。
这个框架的入口是 SPIDERS,出口是 ITEM PIPELINES。其他三个模块用户都不需要关心,
用户需要编写的是 SPIDERS 和 ITEM PIPELINES 的配置。
3.Scrapy 爬虫框架解析
(1)ENGINE:控制所有模块之间的数据流,根据条件触发事件,不需要用户修改。
(2)DOWNLOADER:根据请求下载网页,也不需要用户修改。
(3)SCHEDULER,对所有爬取请求进行调度管理,不需要用户修改。
(4)Downloader Middleware,设置目的是实施
Engine、Scheduler 和 Downloader 之
间进行用户可配置的控制,可以修改、丢弃、新增请求或响应。
(5)Spider:解析 Downloader 返回的响应(Response),产生爬取项(scaped item)
和额外的爬取请求(Request)。
(6)Item Pipelines:以流水线方式处理 Spider 产生的爬取项。它是由一组操作顺序组
成,类似流水线, 操作是一个 Item Pipeline 类型。可能操作包括:清理、检验和查重爬取
项中的 HTML 数据,将数据存储到数据库。
(7)Spider Middleware:目的是对请求和爬取项进行再处理,功能包括修改、丢弃、
新增请求或爬取项,用户可以配置代码。
4.requests 库和 Scarpy 爬虫比较
requests 1.两者都可以进行页面请求和爬取。
2.两者可用性都好,文档丰富、入门简单。
3.两者都没有处理 js、提交表单、应对验证码
等功能(可扩展)。
页面级爬虫;功能库;并发
性考虑不足,性能较差;重
上手十分简单。