文章目录
- Python爬虫(十一)——Scrapy爬虫框架简介
- 安装
- 结构
- 解析
- ENGINE 整个框架的核心
- DOWNLOADER
- SCHEDULER 调度模块
- Downloader Middleware
- SPIDER
- Item PIPELINES
- Spider MIDDLEWARE
- requests库与scrapy库的比较
- 相同点
- 不同点
- 常用命令
Python爬虫(十一)——Scrapy爬虫框架简介
scrapy不是一个简单的功能库,而是一个功能强大的网络爬虫框架。它是实现爬虫功能的一个软件结构和功能组件集合。它约束了一个模板,用户用这个模板来实现爬虫。
安装
打开cmd执行一下语句:
pip install scrapy
scrapy -h
成功后:
结构
Scrapy有七个结构:SPIDERS(入口)、ITEM PIPELINES(出口)、ENGINE(已实现)、SCHEDULER(已实现)、DOWNLOADER(已实现)和MIDDLEWARE、INTERNET。
在这7个结构中,主要有三条数据流:
- SPIDERS->ENGINE->SCHEDULER 首先是Spider给EngineE提交请求Requests,然后Engine转发给Scheduler。
- SCHEDULER->EMGINE->DOWNLOADER->ENGINE->SPIDERS 首先是Scheduler向Engine提交网络爬取请求Requests,然后Engine通过中间件发送给Downloader,然后Downloader从Internet中爬取相关网页,然后将爬取内容封装成成响应对象Response再发送给Engine,最终到达Spider。
- SPIDERS->ENGINE->ITEM PIPELINES and SCHEDULER Spider处理从Downloader获得的响应后形成ITEMS和一个新的请求Requests,然后发送给Engine。然后Engine将Items发给Item Pipelines进行后期的数据处理,将Requests发送给Scheduler从而爬取新的信息。
解析
ENGINE 整个框架的核心
它的主要功能有:
- 控制所有模块之间的数据流
- 根据条件触发事件
DOWNLOADER
它的主要功能是获得一个请求然后爬取网页得到信息打包后返回。
SCHEDULER 调度模块
对所有的爬取请求进行调度管理,对这些请求进行排序。
Downloader Middleware
为了实施ENGINE、SCHDULER和DOWNLOADER之间的用户可配置的控制(修改、丢弃、新增请求或响应),设置了这个中间件。
SPIDER
主要功能:
- 解析Downloader返回的响应
- 产生爬取项
- 产生额外的爬取请求
Item PIPELINES
以一组操作顺序组成,用流水线的方式处理Spider产生的爬取项(清理、检验和查重),最后将数据存储到数据库。
Spider MIDDLEWARE
为了请求和爬取项的再处理(修改、丢弃、新增请求或爬取项),设置了这个中间件
requests库与scrapy库的比较
相同点
- 都可以进行页面请求和爬取
- 可用性都很好,文档丰富,入门简单
- 都没有处理js、提交表单、应对验证码等功能
不同点
requests | Scrapy |
页面级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性不足,性能差 | 并发性好,性能较好 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手十分简单 | 入门稍难 |
注:网络爬虫的快慢只是一个简单的参数,在应对反爬机制时反而要求爬取速度较慢。小的程序适合使用requests库,而较大的适合Scrapy
常用命令
格式:
>scrapy <command> [options] [args]
常用命令:
命令 | 说明 | 格式 |
startproject | 创建一个新工程 | scrapy startproject <name> [dir] |
genspider | 创建一个爬虫 | scrapy genspider [options] <name> <domain> |
settings | 获得爬虫配置信息 | scrapy settings [options] |
crawl | 运行一个爬虫 | scrapy crawl <spider> |
list | 列出工程中所有爬虫 | scrapy list |
shell | 启动URL调试命令行 | scrapy shell [url] |
使用命令行是为了自动化操作,易于脚本控制。