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 |
| Подготовка выгрузки кодом | Преобразования |
Практический порядок
- Создайте Python-сценарий для сайта и заполните параметры источника.
- Сохраните код и выполните проверку. Проверка не обращается к источнику и не доказывает корректность селекторов.
- Сделайте пробный прогон на небольшой выборке. Проверьте ключи, типы, цены, пустые поля и журнал запросов.
- Опубликуйте проверенную версию, затем запустите рабочий прогон. Для регулярного запуска настройте расписание и его часовой пояс.
- Откройте записи и настройте схему выгрузки. 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 работает в облаке и на агентах с оплатой из пространства. Справочник.