rollun-com/rollun-parser

解析器的基础

1.1.0 2020-12-30 11:06 UTC

This package is auto-updated.

Last update: 2024-08-30 01:34:25 UTC


README

rollun-parser 是一个提供基本网站解析功能的库。基于这个库的框架可以构建一个高效的解析系统。

框架架构

alt text

主要组件
  • Task source 是解析系统的一个模块,是所有操作的开始。该模块的任务是将所有可能需要的信息放入队列中,以便于加载器加载和处理页面。通常这些信息是关于要解析页面的对象。
  • Task queue 是一个队列,它将来自 Task source 的消息传递给 Loader
  • Worker manager 是一个对象,它管理由该对象启动的所有进程。
  • Process - 更多信息 在这里,是 Worker manager 的管理单元。如果为进程指定最大生命周期,则 Pid killer 将负责在指定时间后终止进程。
  • Worker 是一个对象,它从 Task queue 中获取消息并使用队列中的数据启动 Loader。一个重要的事实是:如果页面加载尝试失败 - Worker 不会从队列中删除消息,因此它将在一段时间后(time-in-flight)再次出现在队列中,并再次发送给 Loader 处理。如果加载成功 - 消息将从队列中删除。在系统中,WorkerProcess 的一部分,因此可以在 Worker manager 中配置最多可以同时运行多少个工作者。
  • Worker manager 可以配置最多可以同时运行多少个工作者。
  • Loader - 从网站上加载页面,并使用指定的验证器验证它。如果页面有效,则将其记录在 Document storage 中,并将相关信息记录在 Document queue 中以供进一步解析。
  • Parser - 是 Worker manager -> Process -> Worker -> Parser 的子系统。它的工作方式与 Worker manager -> Process -> Worker -> Loader 相似。在成功解析页面后,Parser 将将数据写入指定的 Parser Result Storage
  • Proxy manager - 是一个管理代理发放的子系统。代理总是随机发放的,但频率取决于代理的好评和最后一次使用的时间。与代理合作的客户端(在我们的例子中是 Loader)必须提供关于代理的反馈(将评分从 1 到 10)。Proxy manager 确保始终有新鲜的代理可供你使用。
  • Parser Result Storage - 正如之前所说,这是 Parser 在解析后保存数据的地方。
加载器

库提供了几个基本对象以供使用。其中之一是 AbstractLoader。这个对象是为了从网站加载页面、验证它们并将文档保存到持久化存储(在这种情况下是文件)而设计的。为了编写自己的加载器,从该对象继承,并在需要时实现或重写方法。消息以数组的形式传递到队列中。在这个数组中,filepath 键将包含保存下载的文档的文件名。

解析器

类似的解析对象是 AbstractParser。该对象的任务是从消息中指定的文件(文档队列的消息)解析文件并保存结果。

TaskResource

TaskResource - 此对象继承自 rollun-com/rollun-callback 库中的 QueueFiller。其任务是获取所需的配置并创建一个 ServerRequestInterface 对象,该对象将描述给加载器的请求。

配置示例

[
    [
        'uri' => 'site://example.com',
        'method' => 'POST' // optional, default - 'GET'
    ]
]