rollun-com / rollun-parser
解析器的基础
1.1.0
2020-12-30 11:06 UTC
Requires
- php: ^7.2
- electrolinux/phpquery: ^0.9.6
- fzaninotto/faker: ^1.8
- guzzlehttp/guzzle: ^6.3
- rollun-com/rollun-callback: ^5.1
- rollun-com/rollun-datastore: ^6.0
- zendframework/zend-servicemanager: ^3.3
Requires (Dev)
- phpunit/phpunit: ^7
- rollun-com/rollun-logger: ^4.1||^5.0
- squizlabs/php_codesniffer: ^3.3
- symfony/dotenv: ^4.1
- zendframework/zend-config-aggregator: ^1.0
This package is auto-updated.
Last update: 2024-08-30 01:34:25 UTC
README
rollun-parser
是一个提供基本网站解析功能的库。基于这个库的框架可以构建一个高效的解析系统。
框架架构
主要组件
Task source
是解析系统的一个模块,是所有操作的开始。该模块的任务是将所有可能需要的信息放入队列中,以便于加载器加载和处理页面。通常这些信息是关于要解析页面的对象。Task queue
是一个队列,它将来自Task source
的消息传递给Loader
Worker manager
是一个对象,它管理由该对象启动的所有进程。Process
- 更多信息 在这里,是Worker manager
的管理单元。如果为进程指定最大生命周期,则Pid killer
将负责在指定时间后终止进程。Worker
是一个对象,它从Task queue
中获取消息并使用队列中的数据启动Loader
。一个重要的事实是:如果页面加载尝试失败 -Worker
不会从队列中删除消息,因此它将在一段时间后(time-in-flight
)再次出现在队列中,并再次发送给Loader
处理。如果加载成功 - 消息将从队列中删除。在系统中,Worker
是Process
的一部分,因此可以在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' ] ]