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

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

Python SDK: с чего начать

Python-сценарий собирает данные через тот же механизм Akmelo, что PHP и JavaScript: опубликованные версии, ручные и пробные прогоны, расписания, журнал, качество записей и выгрузки. При создании сценария выберите Python. Язык принадлежит сценарию, поэтому вставлять Python в PHP-версию или переключать язык существующей версии нельзя.

Первый сценарий

Точка входа: обычная синхронная функция def run(ctx):. Платформа создаёт ctx на каждый запуск. Методы SDK работают синхронно; async, await, requests, pandas, самостоятельные HTTP-клиенты и установка пакетов не нужны.

def run(ctx):
    url = ctx.param('catalog_url', '')
    if not url:
        ctx.abort('Укажите адрес каталога')
    response = ctx.http().get(url)
    if not response.ok():
        ctx.fail('Каталог вернул HTTP ' + str(response.status))
    for card in response.dom().qa('.product-card'):
        sku = card.attr('data-sku')
        if not sku:
            continue
        name = card.q('.title')
        price = card.q('.price')
        ctx.emit({
            'sku': sku,
            'name': name.text() if name is not None else '',
            'price': ctx.text().money(price.text() if price is not None else None),
        }, sku)

.product-card, .title, .price и data-sku здесь пример. Подберите селекторы для своего источника и проверьте пробным прогоном. Сценарий не сохраняет результат функции run: записи возвращаются только через ctx.emit(запись, ключ). Стабильный ключ обновляет тот же товар при следующем сборе. Не генерируйте случайный ключ на каждый прогон.

Как читать справочник

В Python имена методов и свойств записаны через подчёркивание: with_headers, put_from_url, wait_for, final_url. Данные сервисов возвращаются словарями и списками: item['sku'], result.get('records', []), regions[0]['id']. Объекты SDK используются через методы: response.json(), document.sheet(0). Обычные значения None, True, False отличаются от JSON null, true, false: сериализацию делает платформа.

Задача Статьи
Версия, проба, публикация, расписание Жизненный цикл
Записи, параметры, секреты, журнал Context, прогресс и повтор
HTTP и HTML HttpClient, Response, Dom, Node
Текст и ссылки TextTools, UrlTools
Интерактивный сайт Browser, BrowserPage, полный пример
Данные между запусками KeyValue
S3, документы и Excel Storage, StoredFile, Documents, Document, Worksheet, SheetCoordinates
Почта и входы процесса Mail, Sources, интеграции
Готовые источники Wildberries, Яндекс Маркет
Интеллектуальная обработка Ai
Подготовка выгрузки кодом Преобразования

Практический порядок

  1. Создайте Python-сценарий для сайта и заполните параметры источника.
  2. Сохраните код и выполните проверку. Проверка не обращается к источнику и не доказывает корректность селекторов.
  3. Сделайте пробный прогон на небольшой выборке. Проверьте ключи, типы, цены, пустые поля и журнал запросов.
  4. Опубликуйте проверенную версию, затем запустите рабочий прогон. Для регулярного запуска настройте расписание и его часовой пояс.
  5. Откройте записи и настройте схему выгрузки. CSV, JSON, XML, HTTP endpoint, файлы, Webhook и поддерживаемые внешние базы используют общую систему записей независимо от языка сбора.

Полные примеры: обход страниц, JSON, первый алгоритм.

Изоляция и возможности среды

Используется CPython 3.13 в отдельном ограниченном процессе. Среда запускает проверенный Python-код, а не произвольную программу с доступом к серверу. Сеть, браузер, файлы, почта, документы, секреты и AI доступны через ctx и правила текущего сайта. Прямые сокеты, файловая система, запуск процессов, системные команды, динамическое исполнение, опасная рефлексия и загрузка произвольных модулей запрещены. pip install внутри сценария нет. Подробнее: жизненный цикл и ограничения.

В ctx.emit() передавайте словарь из JSON-совместимых значений: строк, конечных чисел, логических значений, None, списков и словарей. Не передавайте set, bytes, Decimal, datetime, генератор, объект DOM или документ. Преобразуйте их явно в строку, число или список. Не выводите секреты и личные данные в журнал.

Свой агент

На агенте должен быть включён Python и установлена текущая версия, поддерживающая этот runtime. Агент с одним PHP не сможет исполнить Python-код. Браузер включается отдельно. Сам язык не меняет правила автономности: агент исполняет полученную подписанную конфигурацию, сохраняет записи и делает локальные выгрузки; отправка в облако зависит от зеркалирования. AI и другие облачные зависимости требуют связи с платформой. Выгрузка с Python-преобразованием также требует Python на том узле, где она исполняется.

Пошаговая отладка Python с точками останова не предоставляется. Для диагностики используйте проверку кода, пробу, журнал, метрики и сокращённые входные данные.

Работа с CAPTCHA: полные примеры

Каталог, пагинация, кнопка загрузки, прокрутка, вход, JavaScript-отрисовка и контрольные страницы разобраны в отдельном разделе. Каждый из 12 примеров содержит настройки, полный исходник и объяснение алгоритма.

Явные задания CAPTCHA

Актуальный каталог типов, схемы входных данных, оценка стоимости и получение результата доступны через ctx.captcha(). API работает в облаке и на агентах с оплатой из пространства. Справочник.