Scrapy爬虫框架
Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificial and Intelligence, Huazhong University of Science and Technology
文章目录
本教程主要参考中国大学慕课的 Python 网络爬虫与信息提取,为个人学习笔记。
在学习过程中遇到了一些问题,都手动记录并且修改更正,保证所有的代码为有效。且结合其他的博客总结了一些常见问题的解决方式。
本教程不商用,仅为学习参考使用。如需转载,请联系本人。
Reference
Scrapy爬虫框架介绍
Scrapy 是一个快速功能强大的网络爬虫框架
Win 平台: “以管理员身份运行” cmd ,执行
pip3 install scrapy
pip3 --time-out=2000 install scrapy
安装后小测:执行 scrapy ‐h
Scrapy 不是一个函数功能库,而是一个爬虫框架。
爬虫框架是实现爬虫功能的一个软件结构和功能组件集合,它是一个半成品,能够帮助用户实现专业网络爬虫。
Scrapy爬虫框架流程
结构,分布式,“5+2”结构
数据流的三个路径:
1 Engine 从 Spider 处获得爬取请求(Request)
2 Engine 将爬取请求转发给 Scheduler,用于调度
3 Engine 从 Scheduler 处获得下一个要爬取的请求
4 Engine 将爬取请求通过中间件发送给 Downloader
5 爬取网页后,Downloader 形成响应(Response)通过中间件发给 Engine
6 Engine 将收到的响应通过中间件发送给 Spider 处理
7 Spider 处理响应后产生爬取项(scraped Item)和新的爬取请求(Requests)给 Engine
8 Engine 将爬取项发送给 Item Pipeline(框架出口)
9 Engine 将爬取请求发送给 Scheduler
数据流的出入口:
Engine 控制各模块数据流,不间断从 Scheduler 处获得爬取请求,直至请求为空
框架入口:Spider 的初始爬取请求
框架出口:Item Pipeline
Engine
(1) 控制所有模块之间的数据流
(2) 根据条件触发事件
不需要用户修改
Downloader
根据请求下载网页,不需要用户修改
Scheduler
对所有爬取请求进行调度管理,不需要用户修改
Downloader Middleware
目的:实施 Engine、Scheduler 和 Downloader 之间进行用户可配置的控制
功能:修改、丢弃、新增请求或响应
用户可以编写配置代码
Spider
(1) 解析 Downloader 返回的响应(Response)
(2) 产生爬取项(scraped item)
(3) 产生额外的爬取请求(Request)
需要用户编写配置代码
Item Pipelines
(1) 以流水线方式处理 Spider 产生的爬取项
(2) 由一组操作顺序组成,类似流水线,每个操作是一个 Item Pipeline 类型
(3) 可能操作包括:清理、检验和查重爬取项中的 HTML 数据、将数据存储到数据库
需要用户编写配置代码
Spider Middleware
目的:对请求和爬取项的再处理
功能:修改、丢弃、新增请求或爬取项
用户可以编写配置代码
“5+2” 结构
Requests库和Scrapy爬虫框架对比
相同点:
两者都可以进行页面请求和爬取,Python 爬虫的两个重要技术路线
两者可用性都好,文档丰富,入门简单
两者都没有处理 js、提交表单、应对验证码等功能(可扩展)
不同点:
页面级爬虫 | 网站级爬虫 |
---|---|
功能库 | 框架 |
并发性考虑不足,性能较差 |