简介
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
###环境需求
Python2.7 或者Python3.5以上
安装
在安装前需要确定当前的Python是什么版本,否则会出现环境变量与当前版本不匹配的情况导致找不到文件:command not found
pip install scrapy
如果安装太慢,就把镜像源改为国内:
pip install -i https://pypi.douban.com/simple scrapy
安装过程中你会发现,scrapy
有大量的依赖库:
- twisted 基于事件驱动和异步的网络框架
- lxml python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高
- w3lib 一个关于web的Python库
- cssselect 是一个将css3 selector转换成xpath表达式的库
- queuelib 是一个集合了循环队列的库,也就是说请求量再大也不会造成阻塞
- parsel 从xpath和css selector的html或者xml中提取数据的库
- PyDispatcher
- incremental 对python项目进行版本管理的小型库
- Automat 对整个项目进行属性管理的库,开关是否打开,xxx是否关闭等等
- hyperlink 纯python执行URLs,可以很方便的使用URLs和iRIs
剩下的一些库就不做介绍了,都是些加密的库或者数据管理等都不是Scrapy框架的主要功能。
为什么要使用scrapy
相比以前的request
,由于scapy
底层是异步框架twisted
所以并发进程是它最大的优势。在存储数据、监控、打印日志等操作无需再写异步进程。同理在爬取多页面的时候,不会像request
那样出现一页一页的爬取而造成阻塞的情况。
看了上面的依赖库基本上已经知道Scrapy的核心功能了,其中twisted的异步事件处理机制可以应对多个网络请求而不造成阻塞,queuelib就是它的依赖。同时它也支持从html
和xml
中通过css3 selector
或xpath
来提取数据。有了这两个核心点已经完胜requests
了。
Get Started
创建scrapy项目
scrapy startproject tutorial(项目名)
以Mac为实例,通过日志提供的路径我们可以知道scrapy在系统根目录中创建了一个名为tutorial
的项目
接下来我们观察下整个项目的结构:
|-tutorial
|-scrapy.cfg
|-__init__.py
|-items.py
|-middlewares.py
|-pipelines.py
|-settings.py
|-spiders
|-__init__.py
scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。
items.py 设置数据存储模板,相当于一个数据模型
setting.py 配置文件,可以设置整个项目的全局参数和中间件下载器(middlewares.py)的设置
spider 项目主文件,业务逻辑都在这里实现,需要另外创建文件
了解了各个文件的作用后,去了解下每个文件的基本用法吧:
Scrapy官方文档:Scrapy文档-中文版