scrapy爬虫框架介绍
scrapy不是一个简单的函数功能库,而是一个爬虫框架
爬虫框架:
- 爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合。
- 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
scrapy爬虫框架结构
“5+2”结构:
- ENGINE :已有的,核心,控制所有模块之间的数据流,根据条件触发事件
- SCHEDULER:已有的,对所有的爬虫请求进行调度管理
- ITEM PIPELINES :框架出口,用户编写,以流水线方式处理Spider产生的爬取项,由一组操作顺序组成,类似流水线,每个操作是一个item pipline类型,可能操作包括:清理,检验和查重爬取项中的HTML数据,将数据存储到数据库
- SPIDERS :框架入口,用户编写,解析downloader返回的响应,产生爬取项,以及额外的爬取请求
- DOWNLOADER :已有的,根据请求下载网页
- 2个MIDDLEWARE:Download Middleware:实施Engine,Scheduler和Downloader之间用户可配置的控制,即用户可以修改、丢弃、新增请求或响应。Spider Middleware,对spider的请求和爬取项的再处理。修改、丢弃、新增请求或爬取项。
requests库和scrapy库比较
相同点:两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线。 两者可用性好,文档丰富,入门简单。
两者都没有处理js、提交表单、应对验证码等功能(可扩展)
不同点:
requests | scrapy |
---|---|
页面级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能较差 | 并发性好,性能较高 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手十分简单 | 入门稍难 |
scrapy的常用命令
命令 | 说明 | 格式 |
---|---|---|
startproject | 创建一个新工程 | scrapy startproject <name> [dir] |
genspider | 创建一个爬虫 | scrapy genspidr [option] <name><domin> |
settings | 获取爬虫配置信息 | scrapy settings [options] |
crawl | 运行一个爬虫 | scrapy crawl <spider> |
lsit | 列出工程中所有爬虫 | scrapy list |
shell | 启动URL调试命令行 | scrapy shell [url] |