先前在工作中也有涉及到Scrapy,只是当时有其他人负责网络爬虫工作,并未深入去学习该框架。现在想从某网站上面“爬”点数据,于是利用闲时正在学习Scrapy,在这主要是记录一下本人的学习笔记,希望对其他人也有帮助。
【注】本文所学的是Scrapy官网最新版,即scrapy1.2,官网:https://scrapy.org/
Scrapy
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
Scrapy 使用 Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
Scrapy整体框架--Architecture overview
上图中几个核心部件介绍:
引擎(ENGINE):用来处理整个系统的数据流处理,触发事务。
调度器(SCHEDULER):用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
下载器(DOWNLOADER):用于下载网页内容,并将网页内容返回给蜘蛛。
蜘蛛(SPIDERS):蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。
项目管道(ITEM PIPELINES):定义我们需要的结构化数据,使用相当于dict,负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
中间件(MIDDLEWARES):相当于钩子,可以对爬取前后做预处理,如修改请求header,url过滤等。有Downloader middlewares,Spider middlewares,Scheduler Middlewares等中间件。
【下图:旧版本文档的架构图】
【注】在windows系统下python3环境下暂时无法安装Scrapy1.2版本。
Python 3 is not supported on Windows. This is because Scrapy core requirement Twisted does not supportPython 3 on Windows.
Scrapy初体验
在Ubuntu16.04环境下用virtualenv建立一个”虚拟环境“,并用python3进行Scrapy开发。
首先安装virtualenv: pip install virtualenv
其次建立一个python3开发环境:virtualenv -p /usr/bin/python3 py3env
激活刚创建的virtualenv的python3环境:source py3env/bin/activate
安装Scrapy:pip install scrapy
查看安装情况(列表)pip list
试跑一范例:quotes_spider.py
创建一爬虫py文件,命名quotes_spider.py并保存该文件
然后在终端运行下面语句:scrapy runspider quotes_spider.py -o quotes.json
在当前文件夹下就会生成一爬虫所得到的文件quotes.json
scrapy runspider quotes_spider.py -o quotes.json
运行结果,得到我们在parse函数里所解析到的字段信息。
先记录下这些,待明天继续学习继续更新。大家也可以下载最新的scrapy文档去学习。