# 风铃虫组件
# 主要组件
风铃虫主要组件是其核心组成部分,主要由以下几个组件
- 资源调度器:负责风铃虫资源的调度过程,例如进行任务的储存、调度和管理等
- 网页下载器:负责根据调度器调度的任务下载网页资源
- 链接解析器:负责解析网页下载器下载的网页内容,从网页内容中提取出所有符合要求的链接
- 内容解析器:负责对网页下载器下载的网页内容进行内容解析
- 信息输出器:输出内容解析器解析出来的数据
# 链接解析器
链接解析器由风铃虫根据 链接解析规则
动态生成的 ,其作用是提取网页内容中所有符合 链接提取规则
的超链接,并将超链接统一转换成网络地址形式。
# 内容解析器
内容解析器由风铃虫根据内容解析规则
和内容提取规则
动态生成的,其作用是根据内容提取规则
从下载的网页里提取出期望的数据。
在开始解析之前,内容解析器会根据 内容解析规则
判断哪些页面是内容页,需要从哪些页面中提取数据,对于非内容页,风铃虫不会尝试从中解析数据。
内容提取规则是一个规则集合,由一系列提取项组成,一个提取项定义了如何提取一项网页数据,使用什么方法和步骤从网页中提取数据,例如 提取网页新闻的标题,提取网页文章的作者等。
风铃虫会根据 内容解析规则
生成对应的 内容提取器。
提取器间可以任意自由组合,同一组提取器中的提取器有先后执行顺序要求,上一个提取器的输出数据即为下一个提取器的输入参数,同一组提取器中的提取器根据提取器的序号从低到高到打依次执行
提取器的输出结果可能是一个数组,这组数据会以 系统占位符
[@<yishui>@]
进行分割开,然后拼接成以[@<yishui>@]
分割的字符串,因此使用者在遇到这样含有 [@<yishui>@]
标志的数据时可以根据需要再次调用提取器继续对数据进行处理
# 网页下载器
风铃虫目前内置的网页下载器有
- 根据Jsoup实现的简单下载器
- 基于selenium实现的selenium下载器
其中 简单下载器 完成度较高,支持下载http和https网站,能设置各种请求参数,功能非常强大,是系统中默认使用的下载器。
selenium下载器 目前仍在完善中,但已能够绝大部分应用场景。
网页下载器功能仍在持续开发中,争取后期能够实现网页渲染功能。
# 资源调度器
资源调度器负责调度风铃虫中的资源,主要作用如下:
- 接收爬取任务
- 过滤重复的任务
- 根据规则调度任务交给下载器执行
- 清空任务
# 信息输出器
抓取网页并解析出数据的最终目的就是为了将数据输出指定的地方并利用这些数据。
风铃虫默认的信息输出器是使用logback输出信息到控制台,用户可以配置自己的信息输出器将信息输出到指定的目标中。
# 其他组件
除了上述核心基础组件之外,风铃还有以下一些组件,它们的功能和作用如下。
# 去重器
负责对系统中请求任务进行去重操作,可以根据用户配置使用不同的去重器来执行不同的去重策略
# 状态监听器
状态监听器的作用是接收风铃虫状态改变的消息,监听风铃虫的状态变化情况。
# 事件监听器
事件监听器的作用是接收风铃虫的任务处理情况信息,监听风铃虫的仍无进行情况。它主要介绍以下四种信息
- 下载页面失败的消息
- 下载页面成功的消息
- 解析页面失败的消息
- 解析页面成功的消息
- 被目标服务器封杀的消息
- 超时后任务自动停止的消息
# 资源缓存器
资源缓存器的作用是储存风铃虫运行过程中所有的任务信息,它的主要任务是将运行过程所有的任务都记录起来,为资源调度提供去重等功能进行支持。