爬虫框架Scrapy应用实践-淘宝保险频道数据抓取【1】-前期准备

217 阅读3分钟

1. 写在前面

Scrapy框架的应用实践需要一些知识的储备:

  • Python(框架主体)
  • SQL或者NoSQL数据库(数据存储)
  • HTML及CSS(页面节点分析)
  • XML(XPath相关)(页面节点分析)
  • 网页数据抓包(数据分析)

2. Scrapy架构设计

Scrapy是一套基于Python语言编写的开源爬虫框架,目前已更新到2.1版本。通常Scrapy被用于网站数据爬取、提取结构性数据、数据挖掘、信息处理、或存储历史数据等一系列的程序中。

Scrapy整体架构设计图如下(绿色代表数据流向):

图片引用自Scrapy开发文档-架构概览

img

  • 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路径,如下图:

img

4.1.2 安装、创建和进入

通过如下命令来安装。

pip install virtualenv

创建一个虚拟环境

mkvirtualenv 你要创建的虚拟环境的名称

进入创建的虚拟环境

cd 你创建虚拟环境的位置
activate.bat

退出创建的虚拟环境

deactivate.bat
4.2 virtualenvwrapper-win安装
4.2.1 安装和使用

通过如下命令来安装

pip install virtualenvwrapper-win

通过workon命令查看是否可用

workon

当然你可以直接进入你创建的虚拟环境,比如

workon 你创建的虚拟环境的名称
4.2.2 更改存放路径

默认存放于C:\Users\Administrator\Envs目录中,也可以通过系统环境变量进行修改,如下:

img


到此,前期的准备工作基本都已经完成了,下一步我们就要开始对淘宝的保险频道数据做抓包分析了。