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

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

JavaScript SDK: Context: запуск, данные и прогресс

Платформа передаёт ctx в async function run(ctx). Через него вы получаете параметры, обращаетесь к разрешённым сервисам и отдаёте результаты. Не создавайте ctx самостоятельно.

Примеры — отдельные фрагменты тела async function run(ctx). Используйте await только для методов с Promise в сигнатуре.

Методы

http

ctx.http() → HttpClient

Получить клиент для запросов к сайту. Все запросы используют сетевые настройки текущего сайта.

const result = ctx.http();

state

ctx.state() → KeyValue

Получить хранилище небольшого состояния обхода. Подходит для номера последней обработанной страницы.

const result = ctx.state();

storage

ctx.storage(code) → Storage

Выбрать файловое S3-хранилище по коду подключения. Подключение нужно заранее настроить и разрешить для сайта.

const result = ctx.storage('media');

browser

ctx.browser() → Browser

Получить браузер для страниц, которым нужен JavaScript, клики или прокрутка.

const result = ctx.browser();

wildberries

ctx.wildberries() → Wildberries

Получить готовый источник карточек для сайта, созданного из решения Wildberries. Список товаров и регионов берётся из настроек сайта. Все методы и пример.

const result = ctx.wildberries();

yandexMarket

const source = ctx.yandexMarket();

Получить товары и поисковую выдачу Яндекс Маркета для настроенного сценария. YandexMarket.

const source = ctx.yandexMarket();

dom

ctx.dom(html, baseUrl) → Dom

Разобрать уже полученный HTML. baseUrl нужен для преобразования относительных ссылок в полные.

const result = ctx.dom('<a href="/product">Товар</a>', 'https://example.com');

json

ctx.json(text) → unknown

Разбирает JSON-текст средствами JavaScript. При невалидном JSON выбрасывает ошибку; параметра глубины у JavaScript-метода нет.

const result = ctx.json('{"items":[]}');

text

ctx.text() → TextTools

Получить помощник для очистки текста, цен и артикулов.

const result = ctx.text();

url

ctx.url() → UrlTools

Получить помощник для ссылок, query-параметров и шаблонов страниц.

const result = ctx.url();

emit

ctx.emit(item, key) → void

Добавляет обычный объект JavaScript в результат. Не передавайте объекты Response, Dom или Document целиком: соберите нужные поля. Стабильный key позволит обновить запись в следующем прогоне.

ctx.emit({ sku: 'A-1', price: 1250 }, 'A-1');

flush

ctx.flush() → void

Отправить накопленную пачку записей, не дожидаясь автоматической отправки.

ctx.flush();

log

ctx.log(message, context, level) → void

Записать понятное сообщение в журнал прогона. Дополнительные значения передаются объектом context.

ctx.log('Начат сбор');

progress

ctx.progress(done, total, label, percent) → void

Показать выполненную часть работы и название пользовательского этапа. total можно не знать заранее.

ctx.progress(1, 10, 'Каталог');

metric

ctx.metric(name, value) → void

Добавить числовую метрику выполнения, например количество пропущенных карточек.

ctx.metric('processed', 1);

param

ctx.param(name, default) → unknown

Получить один параметр запуска. default используется, если параметра нет или его значение null.

const result = ctx.param('catalog_url', '');

params

ctx.params() → object

Получить сразу все параметры запуска.

const result = ctx.params();

credential

ctx.credential(name) → Promise<string>

Получить именованный секрет для доступа к целевому сайту. Имя должно соответствовать настроенному ключу.

const result = await ctx.credential('site_token');

sleep

ctx.sleep(ms) → Promise<void>

Сделать контролируемую паузу. Аргумент измеряется в миллисекундах.

await ctx.sleep(250);

cancelled

ctx.cancelled() → Promise<boolean>

Узнать, запросил ли пользователь остановку. Проверяйте в длительных циклах.

const result = await ctx.cancelled();

abort

ctx.abort(reason) → never

Остановить выполнение с объяснением причины, сохранив состояние для возможного продолжения. Прогон получает статус остановленного. Если источник ответил ошибкой или сломался формат данных, используйте fail().

ctx.abort('Не удалось обработать страницу');

fail

ctx.fail(reason) → never

Завершить прогон с ошибкой, когда источник недоступен или ответ не соответствует ожидаемому формату. В отличие от abort(), такая остановка отмечается как ошибка, а не отмена.

ctx.fail('Не удалось обработать страницу');

now

ctx.now() → Date

Возвращает объект Date с текущим моментом времени. Для UTC используйте toISOString(); отображение зависит от выбранного часового пояса.

const result = ctx.now();

mail

ctx.mail() → Mail

Открывает методы чтения входящего письма в почтовом сценарии. Содержимое доступно только для закреплённого события.

const result = ctx.mail();

documents

ctx.documents() → Documents

Открывает чтение и разбор разрешённых файлов Excel, PDF, Word, CSV и текста.

const result = ctx.documents();

ai

ctx.ai() → Ai

Открывает методы анализа, извлечения и преобразования данных. Сетевые вызовы AI асинхронны и учитываются в бюджете пространства.

const result = ctx.ai();

sources

ctx.sources() → Sources

Открывает закреплённые входы процесса и локальное сравнение цен. Сами входы доступны только сценарию соответствующего процесса.

const inputs = ctx.sources();

captcha

ctx.captcha()

Возвращает API явных заданий. Каталог и оценка цены не создают платное задание. Создание, получение статуса и обратная связь работают через учёт пространства в облаке и на агенте.

Подробный справочник методов.