К содержимому

Документация

Первый сценарий сбора на PHP

Сценарий отвечает на три вопроса: какую страницу открыть, где в ней лежат нужные значения и какую запись сохранить. Напишите его в разделе Сценарии или начните с заготовки AI помощника.

Сценарии сбора выполняются на PHP, JavaScript, TypeScript и Python. Ниже показан PHP-пример; первый сценарий на JavaScript находится рядом в разделе SDK. Для кода с типами откройте TypeScript, для синхронного def run(ctx): откройте Python. Go и другие языки планируются. Примеры в разделе API относятся к внешним интеграциям.

Подготовьте источник

  1. Создайте сайт и укажите его адрес.
  2. В полях сайта добавьте sku (строка, ключ), name (строка), price (дробное число), url (ссылка).
  3. Создайте сценарий этого сайта. Точка входа по умолчанию называется run.
  4. Вставьте код ниже и замените 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-подсказок. В разделе настроек редактора можно скрыть строку целиком или отдельные её пункты. При отладке снизу открывается консоль с сообщениями сценария и командами выполнения.