跳到主要内容

与 Target 有关的事件

在执行过程中发现链接时,会使用对应的链接触发 TargetLink 事件。TargetLink 事件对于内外链接均可能触发,因此触发了 TargetLink 事件的链接最终不一定会成为 Target(即会被爬取)。

如果一个链接被确定爬取时,将会触发 NewTarget 事件。

TargetLink 与 NewTarget 的关系
  1. 对于发现的所有满足 follow policy 的链接,都会触发 TargetLink 事件
  2. 对于发现的不满足 follow policy 的链接(即外链),是否触发 TargetLink 事件由 xx 配置决定
  3. 触发了 TargetLink 的链接中,只有满足 follow policy 且去重时对应的 canonical_url 未产生过 Target 时才会触发 NewTarget 事件
  4. 只有在爬取过程中发现的链接才会触发 TargetLink 事件,即并非所有触发了 NewTarget 事件的链接都会触发 TargetLink(一个常见的例子就是 entrypoint 所指定的链接)

当一个链接开始爬取时,会触发 TargetStart 事件,爬取结束后会发送 TargetEnd 事件。

Proto 定义:TargetLink

NewTarget

Proto 定义:NewTarget

此时 Target 刚刚被发现,尚未进行爬取。事件中的 Target 仅包含无需爬取即可获得的基础信息,例如 ID、URL、来源、发现时间等。

TargetStart

Proto 定义:TargetStart

此时 Target 即将开始爬取(排队完成)但仍然尚未进行爬取。事件中的 Target 与 NewTarget 事件中的 Target 几乎完全一样,只是增加了 start_at 时间信息。

TargetEnd

Proto 定义:TargetEnd

此时 Target 已经爬取完成,Target 中的 request response 等信息被填充。