我如何链接两个 Apify 演员?

How do I chain two Apify actors?

我需要使用 Apify 平台抓取通过 Google 搜索获得的 URL 列表。

我的计划是从 Google Search Scraper Actor 任务开始。但是我不认为它可以用来抓取 Google 搜索结果以外的任何东西(也许我错了?)。因此我需要将其输出提供给另一个 Actor 任务,例如Web 抓取器或 Puppeteer 抓取器。

但我似乎找不到与 Actors 链接相关的文档。我应该如何进行?

更新:

我找到了 How to pass data from crawler to actor,并在第二个参与者的 运行 任务 API 端点上设置了一个 ACTOR.RUN.SUCCEEDED webhook似乎有效(即启动第二个演员)。

但是我似乎找不到如何将第一个演员的数据集传递给第二个演员:Start URLs 字段是强制性的我想我应该将其设置为数据集,但是每个 运行…

的数据集 link 是不同的

您可以通过 Metamorph 功能或使用 Webhooks 链接多个演员 运行。

变形

Metamorph 允许您 运行 一个 actor,当该 actor 正在 运行ning 时,"morph" 通过自定义输入将其变成不同的 actor。原始 actor 将被停止并由第二个 actor 替换,但两者将使用相同的存储,具有相同的 运行 ID 并且将在 Apify 应用程序中显示为单个 actor 运行。您可以在单个 运行.

中多次使用 metamorph

You can find the documentation for Metamorph here.

网络钩子

Webhook 允许您在参与者达到给定状态后调用任意 API 端点,例如:成功。您可以使用它来调用 Run Actor API 来启动另一个演员。您可以为 webhook 设置自定义负载,但是目前不支持直接将输出作为 webhook 负载传递,因此您需要使用存储和读取结果的键值存储或数据集的 ID从那里开始。

See the Webhooks docs here.

例如,要获取原始参与者的键值存储和数据集的 ID,您可以像这样配置一个有效负载:

{
    "datasetId": {{resource.defaultDatasetId}},
    "keyValueStoreId": {{resource.defaultKeyValueStoreId}}
}

将数据从 Google Search Scraper 传递到 Web Scraper

这项任务并不简单,因为 Google 搜索输出格式与 Web Scraper 输入格式不兼容。做到这一点的最好方法是创建一个中间参与者,它使用 Google Search Scraper 的输出为 Web Scraper 生成输入,然后变形为它。所以最后的流程是:

Google 搜索抓取器 --webhook--> 输出处理器 Actor --metamorph--> Web 抓取器。