image

简介

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就是它的依赖。同时它也支持从htmlxml中通过css3 selectorxpath来提取数据。有了这两个核心点已经完胜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文档-中文版