爬虫框架 Scrapy 应用实践 - 淘宝保险频道数据抓取【1】- 前期准备
1. 写在前面
Scrapy框架的应用实践需要一些知识的储备:
Python(框架主体)
SQL或者NoSQL数据库(数据存储)
HTML及CSS(页面节点分析)
XML(XPath相关)(页面节点分析)
网页数据抓包(数据分析)
2. Scrapy架构设计
Scrapy是一套基于Python语言编写的开源爬虫框架,目前已更新到2.1版本。通常Scrapy被用于网站数据爬取、提取结构性数据、数据挖掘、信息处理、或存储历史数据等一系列的程序中。
Scrapy整体架构设计图如下(绿色代表数据流向):
图片引用自Scrapy开发文档-架构概览
Scrapy 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常用模块介绍
Item:Item对象是简单的容器,用以保存爬取的数据,提供了类似字典的API以及用于声明可用字段的简单语法。
Selectors:通过特定的XPath或者CSS表达式来"选择"HTML文件中的一部分。
Item Pipeline:Item管道,根据收到的Item执行一些行为,同时也决定Item是否继续通过Pipeline,或者被丢弃不再处理。
Feed Exports:Scrapy自带了Feed输出,并且支持多序列化格式(JSON, JSON lines, CSV, XML)及存储方式(本地文件系统,FTP,S3(需要boto),标准输出)。
Request/Response:Request对象在spiders中被生成且最终传递到下载器Downloader,下载器Downloader对其进行处理并返回一个Response对象,Response对象还会返回到生成Request的spider中。
4. 安装建议(虚拟环境)
利用virtualenv为每个项目创建一套“隔离”的Python运行环境。
利用virtualenvwrapper实现快捷进入方式。
4.1 virtualenv安装
4.1.1 Path路径检查
检查系统环境变量中是否已经添加了Python的Path路径,如下图:
4.1.2 安装、创建和进入
通过如下命令来安装。
创建一个虚拟环境
进入创建的虚拟环境
退出创建的虚拟环境
4.2 virtualenvwrapper-win安装
4.2.1 安装和使用
通过如下命令来安装
通过workon命令查看是否可用
当然你可以直接进入你创建的虚拟环境,比如
4.2.2 更改存放路径
默认存放于C:\Users\Administrator\Envs目录中,也可以通过系统环境变量进行修改,如下:
到此,前期的准备工作基本都已经完成了,下一步我们就要开始对淘宝的保险频道数据做抓包分析了。
版权声明: 本文为 InfoQ 作者【hadesxiong】的原创文章。
原文链接:【http://xie.infoq.cn/article/1fc920e7e5b93ebdb03e9213a】。文章转载请联系作者。
评论