一、scrapy介绍

Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能快速的抓取。

Scrapy使用了 Twisted[ˈtwɪstɪd] 异步网络框架,可以加快我们的下载速度。

Scrapy优势:让爬虫更快、更强!!!它能够帮助提升爬虫的效率,从而更好地实现爬虫。

1、同步、异步;阻塞、非阻塞区别

python activiti业务工作流 python工作流引擎框架_数据

2、Scrapy架构图

python activiti业务工作流 python工作流引擎框架_数据_02

  • crapy 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)

各模块介绍:

python activiti业务工作流 python工作流引擎框架_ide_03

3、scrapy的操作流程

python activiti业务工作流 python工作流引擎框架_ide_04

二、Scrapy基础操作

1、创建一个scrapy项目

  • scrapy   startproject   mySpider
spider/
    scrapy.cfg             # 项目的配置文件
    spider/                # 项目的 Python 模块,与项目名称重名,将从这里引用代码
        __init__.py
        items.py           # 项目的目标文件
        middlewares.py     # 项目的中间件
        pipelines.py       # 项目的管道文件,用来定义储存
        settings.py        # 项目的设置文件
        spiders/           # 存储爬虫代码目录
            __init__.py
            ...

python activiti业务工作流 python工作流引擎框架_ide_05

2、生成一个爬虫

  • scrapy   genspider 爬虫名  "爬虫范围" 

3、提取数据

  • 完善spider,使用xpath等方法

4、保存数据

  • pipeline中保存数据

scrapy 保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,命令如下:

json格式:

scrapy crawl csdn -o article.json

json lines格式,默认为Unicode编码:

scrapy crawl csdn -o article.jsonl

csv 逗号表达式,可用Excel打开:

scrapy crawl csdn -o article.csv

xml格式:

scrapy crawl csdn -o article.xml