Первый сценарий сбора на PHP
Сценарий отвечает на три вопроса: какую страницу открыть, где в ней лежат нужные значения и какую запись сохранить. Напишите его в разделе Сценарии или начните с заготовки AI помощника.
Сценарии сбора выполняются на PHP, JavaScript, TypeScript и Python. Ниже показан PHP-пример; первый сценарий на JavaScript находится рядом в разделе SDK. Для кода с типами откройте TypeScript, для синхронного def run(ctx): откройте Python. Go и другие языки планируются. Примеры в разделе API относятся к внешним интеграциям.
Подготовьте источник
- Создайте сайт и укажите его адрес.
- В полях сайта добавьте
sku(строка, ключ),name(строка),price(дробное число),url(ссылка). - Создайте сценарий этого сайта. Точка входа по умолчанию называется
run. - Вставьте код ниже и замените CSS-селекторы разметкой своего каталога. В параметрах запуска передайте
catalog_urlс адресом каталога.
Пример: одна страница каталога
<?php
function run(\Sdk\Context $ctx): void
{
$url = (string) $ctx->param('catalog_url', '');
if ($url === '') {
$ctx->abort('Укажите catalog_url в параметрах запуска');
}
$ctx->log('Открываем каталог', ['url' => $url]);
$response = $ctx->http()->get($url);
if (!$response->ok()) {
$ctx->abort('Каталог ответил HTTP ' . $response->status);
}
$cards = $response->dom()->qa('.product-card');
if (count($cards) === 0) {
$ctx->abort('Карточки не найдены. Проверьте селектор и режим загрузки');
}
$done = 0;
foreach ($cards as $card) {
$sku = $card->attr('data-sku');
if ($sku === null || $sku === '') {
$ctx->log('Пропущена карточка без артикула', [], 'warning');
continue;
}
$ctx->emit([
'sku' => $sku,
'name' => $card->q('.product-title')?->text(),
'price' => $ctx->text()->money($card->q('.price')?->text()),
'url' => $card->q('a.product-link')?->abs(),
], $sku);
$done++;
$ctx->progress($done, count($cards), 'Читаем товары');
}
$ctx->log('Страница обработана', ['saved' => $done]);
}
$ctx предоставляет доступ к HTTP, HTML, журналу и результатам. qa() находит все карточки, q() находит один вложенный элемент, text() читает текст, attr() читает атрибут. abs() превращает относительную ссылку в абсолютную.
emit() передаёт запись платформе. Ключ $sku помогает узнавать тот же товар при следующем сборе. Не используйте порядковый номер карточки как ключ: порядок товаров меняется. money() разбирает цену вроде «1 500,50 ₽», сохраняя дробную часть. Отсутствующая цена остаётся null, а не превращается в ноль.
Как подобрать селекторы
Откройте визуальный маппер, выберите карточку и поля. .product-card и другие селекторы из примера условные; они не подходят автоматически любому сайту. Посмотрите снимок страницы в журнале прогона и убедитесь, что нужные элементы действительно загружены.
Как проверить
Нажмите проверку кода, сохраните версию, выполните пробный прогон. Откройте журнал и результаты. Сравните несколько записей с сайтом, включая товар без цены. После успешной проверки опубликуйте версию.
Этот пример читает одну страницу. Для всего каталога добавьте пагинацию. Если карточки появляются после JavaScript, используйте браузер.
Подсказки и помощник в редакторе
Язык меню редактора следует языку приложения. Обычные подсказки методов и полей
работают без AI. В PHP набирайте ->, в JavaScript, TypeScript и Python точку ..
Для списка подсказок также можно нажать Ctrl+Пробел. Наведение показывает описание,
а открывающая скобка вызова помогает увидеть аргументы.
В Настройки → Редактор кода включается AI-дополнение. Серое продолжение можно принять Tab или проигнорировать. По умолчанию выбран бесплатный уровень без расхода AI-бюджета. Базовый и максимальный расходуют бюджет пространства. Ошибка бесплатного уровня не приводит к платному запросу. Чат редактора всегда использует AI-бюджет и модели основного помощника. Настройки автодополнения на него не влияют.
Кнопка Помощник открывает чат рядом с кодом. Выделите строки и опишите задачу. Помощник учитывает остальной код и поля сайта. Предложение сначала проверяется, затем его можно посмотреть, применить или отклонить. Применить и проверить запускает пробный сбор; публикация остаётся отдельным действием. Применение можно отменить обычным Undo. Если вы уже изменили исходник, отправьте запрос заново, чтобы предложение не затёрло новые правки. Во время отладки применение недоступно.
В локальном агенте AI работает через облако. В запрос уходят код и задача, но не собранные записи. Не вставляйте пароли или личные сведения в код; используйте защищённые параметры сайта. Для применения нового языка меню открытая страница редактора обновится, а сохранённый в браузере черновик восстановится.
В отладке точки останова необязательны: без них выполнение остановится на первой строке. Если написано «Ожидает свободного исполнителя», прогон ещё стоит в очереди. На своём сервере проверьте, что обработчик прогонов агента запущен.
Как устроен рабочий экран
Код занимает всю свободную область. Инструменты находятся в левом доке: оттуда открываются помощник, результаты, отладчик и консоль. Боковая панель сначала скрыта. Кнопки вверху справа меняют расположение на две колонки или две строки. Потяните границу панели, чтобы изменить пропорции; на пересечении границ можно менять сразу ширину и высоту. Выбранные размеры сохраняются в этом браузере.
Версия выбирается слева в нижней строке. Рядом общий индикатор показывает сохранение и проверку кода. Отсюда можно открыть замечания и перейти к нужной строке. Остальные пункты показывают положение курсора, число строк, язык, время и состояние AI-подсказок. В разделе настроек редактора можно скрыть строку целиком или отдельные её пункты. При отладке снизу открывается консоль с сообщениями сценария и командами выполнения.