Scrapy框架
1. 框架
- 什么是框架
- 就是一个集成了很多功能并且具有很强通用性的一个项目模板
- 可以认为就是一个较为通用的项目模板
- 一个项目的半成品
- 如何学习框架
- 专门学习框架封装的各种功能的详细用法
- 什么是Scrapy
- 爬虫中封装好的一个框架,功能强大,使用较多
- 功能(优点)
- 高性能的持久化存储
- 异步数据的下载
- 高性能的数据解析
- 分布式
2. 基本使用
2.1 Scrapy环境的安装
- 直接通过pip命令安装(方便、快捷)
# pip install Scrapy
- 下载相关文件后安装(比较麻烦)
- pip install wheel
- 下载twisted,地址为:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
- pip install pywin32
- pip install scrapy
- 测试:终端中输入scrapy命令,没有报错即为安装成功
2.2 基本使用(使用步骤)
- 创建工程:scrapy startproject 项目名
- 进入项目:cd 项目名
- 在spiders子目录下创建爬虫文件
- scrapy genspider 爬虫名 网址
- 例如:scrapy genspider first www.first.com
- 执行爬虫
- scrapy crawl 爬虫名
3. 数据解析
- xpath解析
- response.xpath(‘’)
- 返回的是列表,列表元素是Selector对象
- 从Selector对象返回data参数:使用extract()
- 也可以使用 .get(“data”)
- 如果列表调用extract,则表示将列表中的每一个Selector对象中的data值都提取了出来
- extract_first(),将列表中的第一个元素(下标为0)进行extract操作
4. 持久化存储
- 基于终端命令
- 要求:只可以将parse方法的返回值存储到本地的文本文件中
- 注意:持久化存储对应的文本文件类型只可以是:
‘json’, ‘jsonlines’, ‘jl’, ‘csv’, ‘xml’, ‘marshal’, ‘pickle’ - 指令:scrapy crawl xxx -o 文件名
- 好处:简洁、高效、便捷
- 缺点:局限性较强(数据只可以存储到指定后缀的文本文件中)
- 基于管道
-
编码流程
- 数据解析
- 在item类中定义相关属性
- 将解析的数据封装存储到item类型的对象中
- 将item类型的对象提交给管道进行持久化存储操作
- 在管道类的process_item中要将其接收到的item对象中存储的数据进行持久化存储操作
- 在配置文件中开启管道
-
好处
- 通用性高
-
面试题:将爬取的数据一份存到本地,一份存到数据库
- 管道中一个类对应将数据存储到一种平台
- 爬虫文件提交的item只会给管道文件中第一个被执行的管道类接收
- process_item中的return item表示将item传递给下一个即将被执行的管道类
-