Собрать данные
Параметр - JSON:
{"container":".product-card","limit":100,"fields":[{"name":"Цена","selector":".price","attr":"text"}]}container - селектор повторяющегося блока, селекторы полей ищутся внутри него; пустой container - собирается один объект. Если не найдено ни одной карточки, шаг падает: селектор устарел.
В Визуализаторе писать JSON руками не нужно - есть кнопка «Выбрать поля на странице». Число строк ограничено тарифом. AI-токены шаг не тратит.
Про конструктор полей, пагинацию ("append": true) и лимиты - в справке по действию.
Собрать со страницы структурированные данные - список однотипных карточек или один объект. Результат виден на вкладке «Данные» отчёта прогона, выгружается в CSV/JSON и доступен по API. Параметр - JSON. AI-токены/деньги шаг не тратит.
Список карточек (типовой случай):
{
"container": ".product-card",
"limit": 100,
"fields": [
{ "name": "Название", "selector": "h3", "attr": "text" },
{ "name": "Цена", "selector": ".price", "attr": "text" },
{ "name": "Ссылка", "selector": "a", "attr": "href" }
]
}
Селекторы полей ищутся внутри карточки, поэтому они короткие
(h3, а не .product-card h3).
Один объект (карточка товара, страница заказа):
{
"fields": [
{ "name": "Товар", "selector": "h1", "attr": "text" },
{ "name": "Цена", "selector": ".product-price", "attr": "text" },
{ "name": "Наличие", "selector": ".stock-badge", "attr": "text" }
]
}
container не указан - собирается одна строка, селекторы действуют на всю страницу.
Сколько строк соберётся (тариф). Потолок строк за один шаг задан тарифом: на бесплатном, «Старте» и «за тест» - 10 строк (этого хватает и режиму одного объекта - там строка всего одна), на Pro - 100, на старших тарифах тарифного потолка нет. Лишнее отрезает сервер, а причину пишет в лог шага: «лимит тарифа» - чтобы обрезанная таблица не выглядела как поломка селектора. Пагинация обходом не является: при накоплении потолок считается по сумме всех страниц, а не по одной.
Что можно взять (attr):
text- видимый текст (по умолчанию)html- внутренний HTML элементаhref/src- ссылка и картинка (абсолютный URL)value- значение поля формы- любой атрибут:
data-id,title,alt
Поведение: поле, которого нет в карточке, останется пустым - карточка всё равно попадёт в датасет. Если не найдено ни одной карточки, шаг падает: это признак устаревшего селектора.
Совет: поставьте перед шагом «Ждать появление элемента» с селектором карточки, если витрина догружается скриптом - иначе шаг снимет пустую страницу.
Шаг работает и в превью/рекордере: там собирается сокращённая выборка, чтобы сразу увидеть, что попадёт в датасет.
В Визуализаторе JSON писать не нужно. Откройте тест в режиме Визуализатора и нажмите в шаге «Выбрать поля на странице»:
- клик по карточке товара - шаг сам находит контейнер и показывает, сколько таких карточек нашлось на странице;
- клики по цене, названию, ссылке - собирают список полей; имя колонки подставляется по содержимому (Цена, Название, Ссылка);
- таблица предпросмотра показывает, что реально попадёт в датасет; колонки переименовываются прямо в её заголовках;
- JSON внизу формы обновляется сам - его можно не трогать.
Над кнопкой стоит переключатель «Список / Один объект». Список - на странице много одинаковых блоков (витрина, таблица, лента): первый клик ищет повторяющийся блок. Один объект - забрать надо одно значение или одну карточку: контейнер не ищется вовсе, каждый клик сразу добавляет колонку. Переключайтесь на Один объект, если автоопределение приняло за витрину подсветку текста или общую обёртку страницы и показало десятки «карточек» с одним значением. Смена режима сбрасывает подбор: в режиме списка селекторы полей относительные (внутри карточки), в режиме одного объекта - абсолютные.
В обычном редакторе теста этого конструктора нет: там нет живой страницы, по которой можно кликать, поэтому параметр вводится как JSON.
Пагинация: собрать все страницы в одну таблицу. Добавьте в
параметр "append": true и поставьте шаг в цикл
граф-теста:
Цикл (пока верно: «Видеть элемент» .pagination .next, лимит 50)
└─ тело: Собрать данные → Клик .pagination .next → Ждать .product-card
{
"container": ".product-card",
"append": true,
"fields": [
{ "name": "Название", "selector": "h3", "attr": "text" },
{ "name": "Цена", "selector": ".price", "attr": "text" }
]
}
С флагом снимки всех витков склеиваются в один датасет: одна таблица в отчёте (с пометкой, из скольких страниц собрана), одна выгрузка CSV, один ответ API. Без флага каждый виток даёт отдельную таблицу - двадцать страниц приедут двадцатью выгрузками.
Общий лимит строк считается по накопленному итогу, а повторная отправка той же страницы после сетевого сбоя строки не удваивает. Упавший шаг внутри цикла прекращает повторы, так что устаревший селектор не превратится в полсотни холостых витков.
Мониторинг изменений на пагинации: ставьте шаг «Сравнить с прошлым прогоном» ПОСЛЕ цикла с пустым селектором - он возьмёт накопленный датасет целиком. Внутри цикла он сравнивал бы страницу с той же по счёту страницей прошлого прогона, и один новый товар сдвинул бы всю витрину на позицию.