Решения
Сбор данных без кода
- 17
- видов шага на экране «Сценарии»
- 4
- из них читают страницу
- Нет
- встроенной выгрузки прочитанного
- 1, 2, 3, 5 или 8
- профилей на выбор при ручном запуске
- 100 на профиль за прогон
- снимков экрана
Куда попадает собранный текст
Это стоит выяснить раньше, чем задумывать работу. Значение, прочитанное на сороковой странице, доступно сорок первому шагу, а после прогона от него остаётся строка в журнале, а не строка в файле.
Со снимками экрана иначе. Это настоящие файлы в папке, доступной только вашей учётной записи.
- Пока идёт прогон
- Значение лежит в переменной, и следующие шаги её читают
- После прогона
- Строка в журнале здесь, последние 20 прогонов
- Снимки экрана
- Файлы PNG, доступные только вашей учётной записи
- Таблица
- Не пишется: ничто не превращает прогон в файл со строками
- Спросить через локальный API
- Номер прогона и счёт профилей, но не текст
Журнал шагов показывает последние строки и после перезапуска держит тот же хвост, поэтому долгий сбор остаётся выборкой из себя.
Четыре шага для чтения
На экране «Сценарии» девятнадцать видов шага, и четыре из них читают, а не действуют. Каждый идёт внутри браузера самого профиля, с его отпечатком, его куки и его прокси.
Пятый оставляет не текст, а свидетельство. Шаг «Снимок экрана» сохраняет страницу такой, какой она была.
Извлечь текст
Берёт первый подошедший селектору элемент и держит его текст, обрезанный по краям и до 4000 знаков.
Для каждого элемента
Повторяет вложенные шаги на каждом найденном элементе: десять проходов, если не задать другое число, и до тысячи.
Выполнить JavaScript
Выполняет ваш код в странице и держит то, что он вернул, с пределом в шестьдесят секунд по умолчанию.
Ждать запрос
Держит прогон, пока страница не попросит названный вами адрес, и опоздавший список читается после того, как он пришёл.
Что на самом деле останавливает сбор
Сломанный селектор падает громко, и чинят его за минуту. Тихо работу заканчивает другое: один браузер, одна банка куки и один адрес, читающие тысячу страниц в час.
Профиль на источник и прокси на профиль это то, ради чего продукт и существует, и ни один селектор этого не чинит.
Адреса вы приносите свои. ARMANOS не продаёт прокси и не держит своей сети выходов: экран «Поставщики прокси» это перечень 8 поставщиков, а «Запросить доступ» там записанная заявка без оплаты.
Список страниц каждое утро
Расписание принадлежит сценарию и называет профили, время и сколько идёт разом. Каждый день, по выбранным дням недели или раз в 1-24 часа, по вашему местному времени.
Срабатывает оно, только пока ARMANOS открыт. Слот, опоздавший больше чем на тридцать минут, переносится вперёд и считается пропущенным, а пропущенное не доигрывается.
Это сделано нарочно. Тридцать профилей, проснувшихся разом в час, когда они обычно не работают, это и есть всплеск, который сайт читает как робота.
Строки в таблице
Честный ответ про выгрузку такой: её делают расширения для сбора, а не мы. В каталоге внутри программы их два, оба работают мышью и оба сами пишут CSV.
Ставятся они в выбранный вами профиль, поэтому сбор идёт за отпечатком и адресом этого профиля.
Это чужая работа. Мы сохраняем их магазинный номер, чтобы страница видела то расширение, которое ожидает.
| Что нужно | Откуда берётся | Что делаем мы |
|---|---|---|
| Текст в переменную | Шаг чтения на экране «Сценарии» | Наше, и никакого файла не пишет |
| CSV со списком | Расширение для сбора из каталога | Ставим его в один профиль |
| Свидетельство о цене | Шаг «Снимок экрана» | Наше, файлы PNG |
| Строки по расписанию | Расписание над сценарием | Наше, пока программа открыта |
Где площадка говорит нет
Правила идут раньше техники. Условия пользования, права на базу данных и закон о личных данных решают вопрос раньше, чем до него доберётся любой вид шага.
Одна площадка называет это прямо. LinkedIn просит один аккаунт на человека под настоящим именем и отдельно наказывает за автоматический сбор данных оттуда.
Там, где такого правила у сайта нет, задача снова становится инженерной.
Когда страница сопротивляется
Ничто в продукте не отвечает на проверку и ни к какой решающей службе не подключается. Отвечать на неё вам, в своём окне.
Прогон на ней тоже не ждёт. Шаг, ничего не нашедший, записывается как провалившийся, а дальше решает правило сценария: новый сценарий останавливает этот профиль, а сценарий из прежней версии идёт дальше по странице, которая всё ещё спрашивает.
Профилю, запущенному без окна, вопрос показать негде вовсе, поэтому работу, способную его поднять, запускают так, чтобы её было видно.
Готово не значит собрано
Чего это не делает
- Там, где площадка запрещает автоматический сбор, это её правило, и обходить его мы не помогаем. LinkedIn называет запрет прямо.
- Встроенной выгрузки нет ни одной. Прочитанное шагом чтения живёт в журнале шагов на этой машине, запуск через локальный API отвечает номером прогона, а CSV пишет только чужое расширение из каталога.
- Шаг чтения берёт первый подошедший его селектору элемент и текст внутри него. Таблиц он не понимает, страницы не листает, схемы данных здесь нет.
- Проверку мы не решаем и к решателям не подключаемся. Профилю без окна вопрос показать негде, и прогон кончается провалом.
Как проверить
У каждого утверждения выше есть файл и стенд, который краснеет, как только оно перестаёт быть правдой.
- Какие виды шага бывают в сценарии
- apps/desktop/src/lib/rpa.js · apps/desktop/test/flow-check.js
- Прогон действительно ведёт браузер
- apps/desktop/test/сценарий-живьём.js
- Запуск через локальный API отвечает номером прогона
- apps/desktop/src/lib/local-api.js · apps/desktop/test/local-api-gate.js
- Что законченный прогон оставляет здесь
- apps/desktop/src/main/main.js · apps/desktop/test/run-log-survives-restart.js
- Готово значит шаги прошли
- apps/desktop/src/main/main.js · apps/desktop/test/run-result-honest.js
- Магазинный номер расширений для сбора
- packages/shared/src/index.js · apps/desktop/test/ext-keeps-store-id.js
Вопросы
- Как получить строки в таблицу?
- Из журнала шагов на этой машине: больше программа их никуда не кладёт, и кнопки выгрузки у итога прогона нет. Файл сам собой пишет расширение для сбора из каталога, и отвечает за него тот, кто его сделал.
- Можно ли собирать там, где это запрещено?
- Это ваш вопрос к площадке, а не к нам. Где запрет назван прямо, мы говорим о нём вслух.
- Что будет, когда поднимется проверка?
- Её никто не решает. Шаг записывается как провалившийся, дальше решает правило сценария, а профиль без окна вопрос показать не может.
- Даёте ли вы адреса?
- Нет. Экран «Поставщики прокси» это перечень 8 поставщиков, «Запросить доступ» там записанная заявка без оплаты, а без прокси профиль выходит с вашего собственного адреса.
Один список страниц и десять профилей
Экран «Сценарии», журнал шагов и расписание живут в самой программе. О сценарии наружу ничего не уходит, пока вы сами его не выгрузите.