# 运行原理

输入图片说明

# 运行流程

  1. 从资源调度器中获取一个下载任务
  2. 网页下载器根据下载任务信息从互联网上下载网页内容
  3. 从下载网页内容中提取出所有符合要求的链接
  4. 将提取出的链接放入链接池供调度器调度
  5. 内容解析器解析下载网页内容,根据配置从中提取出数据信息
  6. 信息输出器输出内容解析器解析出来的数据

在正常情况下,风铃虫会一直循环进行上述步骤,一直到任务完全完成。

# 任务完成条件

在一般情况下,只要风铃虫满足以下 任意一种情况就会停止实例的运行,并将状态改变的消息通过爬虫状态监听器 发送出去。

  1. 风铃虫停止接口被调用
  2. 风铃虫开启拦截检测功能后,连续检测到拦截标志出现,且连续出现的次数达到阀域值
  3. 风铃虫连续一段时间为接受到信息的任务调度命令,持续时间达到阀域值

# 主要组成部件

他们的作用与功能如下所示:

  • 资源调度器:负责风铃虫资源的调度过程,例如进行任务的储存、任务的调度和任务的管理
  • 网页下载器:负责根据调度器调度的任务下载网页资源
  • 链接解析器:负责解析网页下载器下载的网页内容,从网页内容中提取出所有符合要求的链接
  • 内容解析器:负责对网页下载器下载的网页内容进行内容解析
  • 信息输出器:输出内容解析器解析出来的数据

# 链接解析器

链接解析器由一系列 链接提取器 组合而成,主要作用是提取网页内容中所有的超链接,并将超链接统一转换成网络地址形式。

目前链接提取器主要是支持正则提取,后期会增加其他的提取方式。

# 网页下载器

风铃虫目前内置的网页下载器有

  • 根据Jsoup实现的简单下载器
  • httpclient实现的http下载器

其中 简单下载器 完成度较高,支持下载http和https网站,能设置各种请求参数,功能非常强大,是系统中默认使用的下载器。

http下载器 目前仍在完善中,能够足普通的http和https网站的下载要求。

网页下载器功能仍在持续开发中,争取后期能够实现网页渲染功能。

# 资源调度器

资源调度器负责调度风铃虫中的资源,主要作用如下:

  1. 接收爬取任务
  2. 过滤重复的任务
  3. 根据规则调度任务交给下载器执行
  4. 清空任务

# 内容解析器

内容解析器负责根据内容解析规则解析出下载的网页内容中的信息。

内容解析规则由一系列提取项组成,一个提取项提取一项网页数据,例如 提取网页新闻的标题,提取网页文章的作者等。

提取项由一系列内容提取器规则参数组成。

提取器间可以任意自由组合,同一组提取器中的提取器有先后执行顺序要求,上一个提取器的输出参数即为下一个提取器的输入参数,同一组提取器中的提取器根据提取器的序号从下到打依次执行

一个提取器可能会提取出一组数据,这组数据会以 系统占位符 [@<yishui>@] 进行分割开,因此使用者在遇到这样含有 [@<yishui>@]标志的数据时可以根据需要再次调用提取器继续对数据进行处理

# 信息输出器

抓取网页并解析出数据的最终目的就是为了将数据输出指定的地方并利用这些数据。

风铃虫默认的信息输出器是使用logback输出信息到控制台,用户可以配置自己的信息输出器将信息输出到指定的目标中。

# 其他组件

除了上述核心基础组件之外,风铃还有以下一些组件,它们的功能和作用如下。

# 状态监听器

状态监听器的作用是接收风铃虫状态改变的消息,监听风铃虫的状态变化情况。

# 事件监听器

事件监听器的作用是接收风铃虫的任务处理情况信息,监听风铃虫的仍无进行情况。它主要介绍以下四种信息

  • 下载页面失败的消息
  • 下载页面成功的消息
  • 解析页面失败的消息
  • 解析页面成功的消息
  • 被目标服务器封杀的消息
  • 超时后任务自动停止的消息

# 资源缓存器

资源缓存器的作用是储存风铃虫运行过程中所有的任务信息,它的主要任务是将运行过程所有的任务都记录起来,为资源调度提供去重等功能进行支持。

Last Updated: 1/6/2020, 9:47:00 PM