Как связать двух актеров Apify?

Мне нужно очистить список URL-адресов, полученный поиском Google, с помощью платформы Apify.

Я планирую начать с задачи Google Search Scraper Actor. Однако я не думаю, что его можно использовать для очистки чего-либо еще, кроме результатов поиска Google (может я ошибаюсь?). Поэтому мне нужно предоставить результат для другой задачи Актера, например. Веб-скребок или Скребок-кукловод.

Но я не могу найти документацию, относящуюся к цепочке Актеров. Как мне продолжить?

Обновлять :

Я нашел Как передавать данные от поискового робота к субъекту и установка ACTOR.RUN.SUCCEEDED веб-перехватчика в конечной точке API Выполнить задачу второго субъекта, похоже, работает (то есть запускается второй субъект).

Однако я не могу найти, как передать набор данных первого актера второму актору: поле Start URLs является обязательным, я думаю, я должен установить его в набор данных, однако ссылка на набор данных отличается для каждый пробег…


person Skippy le Grand Gourou    schedule 25.07.2019    source источник


Ответы (1)


Вы можете связать несколько запусков акторов либо с помощью функции Metamorph, либо с помощью Webhooks.

Метаморф

Метаморф позволяет вам запускать актера и, пока он работает, «преобразовать» его в другого актера с настраиваемым вводом. Исходный актер будет остановлен и заменен вторым, но оба будут использовать одни и те же хранилища, будут иметь одинаковый идентификатор запуска и будут отображаться как один исполнитель, запущенный в приложении Apify. Вы можете использовать метаморф несколько раз за один проход.

Вы можете найти документацию по Metamorph здесь.

Вебхуки

Веб-перехватчики позволяют вызывать произвольную конечную точку API, когда субъект достигает заданного статуса, например: УСПЕШНО. Вы можете использовать это для вызова Run Actor API, чтобы запустить другого актера. Вы можете установить пользовательскую полезную нагрузку для веб-перехватчиков, однако в настоящий момент передача вывода напрямую, поскольку полезная нагрузка веб-перехватчика не поддерживается, поэтому вам нужно будет использовать идентификатор хранилища значений ключа или набора данных, где ваши результаты хранятся и читаются. это оттуда.

См. документацию по Webhooks здесь.

Например, чтобы получить идентификаторы как хранилища значений ключей, так и набора данных исходного актера, вы должны настроить полезную нагрузку следующим образом:

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

Передача данных из парсера поиска Google в парсер

Задача нетривиальная, потому что выходной формат Google Search несовместим с входным форматом Web Scraper. Лучший способ сделать это - создать посредника, который использует выходные данные из Google Search Scraper для создания входных данных для Web Scraper, а затем превращается в него. Итак, финальный поток:

Google Search Scraper --webhook--> Актёр процессора вывода --metamorph--> Web Scraper.

person Ondra Urban    schedule 26.07.2019