1

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

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

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

更新 :

我发现How to pass data from crawler to actor ,并且在第二个 actor 的Run task API 端点上设置一个ACTOR.RUN.SUCCEEDEDwebhook似乎有效(即第二个 actor 已启动)。

但是我似乎找不到如何将第一个参与者的数据集传递给第二个参与者:Start URLs字段是强制性的,我想我应该将其设置为数据集,但是每次运行的数据集链接都不同……</p>

4

1 回答 1

2

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

变质

Metamorph 允许您运行一个actor,并且在actor 运行时,将其“变形”为具有自定义输入的不同actor。原来的 Actor 将停止并被第二个 Actor 替换,但两者将使用相同的存储空间,具有相同的运行 ID,并将在 Apify 应用程序中显示为单个 Actor 运行。您可以在一次运行中多次使用变形。

您可以在此处找到 Metamorph 的文档

网络挂钩

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

请参阅此处的 Webhooks 文档

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

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

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

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

Google Search Scraper--webhook-->输出处理器 Actor --metamorph-->Web Scraper。

于 2019-07-26T09:32:04.883 回答