【Python】scrapy框架简介——架构、数据流、配置文件

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

架构图

各模块介绍:

Engine 引擎

处理整个系统的数据流处理、触发事务,是整个框架的核心

Item 项目

它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item 对象

Scheduler 调度器

接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎。

Downloader下载器

下载网页内容,并将网页内容返回给蜘蛛。

Spiders 蜘蛛

其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。

Item Pipeline 项目管道

负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗、验证和存储数据。

Downloader Middlewares 下载器中间件

位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应。

Spider Middlewares 蜘蛛中间件

位于引擎和蜘蛛之间的钩子框架,主要处理蜘蛛输入的响应和输出的结果及新的请求。

 

数据流

Scrapy中的数据流由引擎控制,数据流的过程如下。

  1. Engine首先打开一个网站,找到处理该网站的Spider,并向该Spider请求第一个要爬取的URL 。
  2. Engine从Spider中获取到第一个要爬取的URL,并通过Scheduler以Request的形式调度。
  3. Engine向Scheduler 请求下一个要爬取的URL。
  4. Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过Downloader MiddJewares转发给Downloader下载。
  5. 一旦页面下载完毕,Downloader生成该页面的Response,并将其通过Downloader Middlewares发送给Engine。
  6. Engine从下载器中接收到Response,并将其通过Spider Middlewares 发送给Spider处理。
  7. Spider处理Response,并返回爬取到的Item及新的Request给Engine。
  8. Engine将Spider返回的Item给Item Pipeline,将新的Request给Schedul er。
  9. 重复第2--8步,直到Sch eduler中没有更多的Request , Engine关闭该网站,爬取结束。

通过多个组件的相互协作、不同组件完成工作的不同、组件对异步处理的支持,Scrapy最大限度地利用了网络带宽,大大提高了数据爬取和处理的效率。

项目架构

Scrapy框架和pyspider不同,它是通过命令行来创建项目的,代码的编写还是需要IDE 。项目创建之后,项目文件结构如下所示:

scrapy.cfg :它是Scrapy 项目的配置文件,其内定义了项目的配置文件路径、部署相关信息等内容。

items.py :它定义Item 数据结构,所有的Item 的定义都可以放这里。

pipelines.py :它定义Item Pipeline的实现,所有的Item Pipeline的实现都可以放这里。

settings.py :它定义项目的全局配置。

middlewares.py :它定义Spider Middlewares 和Downloader Middlewares 的实现。

spiders:其内包含一个个Spider 的实现,每个Spider 都有一个文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值