一、scrapy介绍
Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能快速的抓取。
Scrapy使用了 Twisted[ˈtwɪstɪd] 异步网络框架,可以加快我们的下载速度。
Scrapy优势:让爬虫更快、更强!!!它能够帮助提升爬虫的效率,从而更好地实现爬虫。
1、同步、异步;阻塞、非阻塞区别
2、Scrapy架构图
- crapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
- Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
- Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
- Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
- Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
- Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
- Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)
各模块介绍:
3、scrapy的操作流程
二、Scrapy基础操作
1、创建一个scrapy项目
- scrapy startproject mySpider
spider/
scrapy.cfg # 项目的配置文件
spider/ # 项目的 Python 模块,与项目名称重名,将从这里引用代码
__init__.py
items.py # 项目的目标文件
middlewares.py # 项目的中间件
pipelines.py # 项目的管道文件,用来定义储存
settings.py # 项目的设置文件
spiders/ # 存储爬虫代码目录
__init__.py
...
2、生成一个爬虫
- scrapy genspider 爬虫名 "爬虫范围"
3、提取数据
- 完善spider,使用xpath等方法
4、保存数据
- pipeline中保存数据
scrapy 保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,命令如下:
json格式:
scrapy crawl csdn -o article.json
json lines格式,默认为Unicode编码:
scrapy crawl csdn -o article.jsonl
csv 逗号表达式,可用Excel打开:
scrapy crawl csdn -o article.csv
xml格式:
scrapy crawl csdn -o article.xml