Python SDK: Яндекс Маркет: товары и поиск готового решения
ctx.yandex_market() работает в готовом решении Яндекс Маркета. Сначала настройте разрешённые товары, регионы, вид сценария и предел страниц. Доступность вызова проверяет платформенный обработчик по настройкам источника; произвольная ссылка не обходит ограничения.
products
ctx.yandex_market().products() -> list[str]
Аргументы не нужны.
Результат: list[str].
Настроенные идентификаторы или ссылки товаров; локально, без запроса.
result = ctx.yandex_market().products()
regions
ctx.yandex_market().regions() -> list[str]
Аргументы не нужны.
Результат: list[str].
Настроенные строковые идентификаторы регионов. Передайте выбранное значение в card/search.
result = ctx.yandex_market().regions()
query
ctx.yandex_market().query() -> str
Аргументы не нужны.
Результат: str.
Поисковая фраза из настроек; пустая строка означает, что она не задана.
result = ctx.yandex_market().query()
max_pages
ctx.yandex_market().max_pages() -> int
Аргументы не нужны.
Результат: int.
Глубина из настроек, ограниченная 1–30 страницами; по умолчанию 3.
result = ctx.yandex_market().max_pages()
card
ctx.yandex_market().card(product, region_id) -> dict[str, Any]
| Аргумент | Тип | Обязателен | Назначение |
|---|---|---|---|
product |
str |
Да | Товар из настроенного списка готового источника. |
region_id |
str |
Да | Идентификатор разрешённого региона, не его отображаемое название. |
Результат: dict[str, Any].
Получить выбранный товар в разрешённом регионе. Возвращает первую нормализованную карточку или пустой словарь, если её нет.
market = ctx.yandex_market()
products = market.products()
regions = market.regions()
if not products or not regions:
ctx.abort('Configure products and regions')
result = market.card(products[0], regions[0])
search
ctx.yandex_market().search(region_id, page) -> dict[str, Any]
| Аргумент | Тип | Обязателен | Назначение |
|---|---|---|---|
region_id |
str |
Да | Идентификатор разрешённого региона, не его отображаемое название. |
page |
int |
Да | Номер страницы в разрешённой глубине. |
Результат: dict[str, Any].
Получить страницу по настроенному запросу. Регион и глубина проверяются платформой. Проверяйте карточки и метаданные страницы перед продолжением.
market = ctx.yandex_market()
regions = market.regions()
if not regions:
ctx.abort('Configure a region')
result = market.search(regions[0], 1)
record
ctx.yandex_market().record(card) -> dict[str, Any]
| Аргумент | Тип | Обязателен | Назначение |
|---|---|---|---|
card |
dict[str, Any] |
Да | Уже полученная карточка источника. |
Результат: dict[str, Any].
Выбрать поля нужного вида сценария из уже полученной карточки. Выполняется локально, автоматически запись не сохраняет. Для цен, наличия и рейтингов оставляет соответствующие поля.
result = ctx.yandex_market().record({'ym_id': '123', 'title': 'Product'})
Сетевые операции могут завершаться ошибкой из-за ограничений источника или недоступного браузерного сервиса. Отсутствие карточек не доказывает успешный полный сбор. Проверяйте журнал и пробный прогон. Этот помощник не является неограниченным публичным API Маркета.
Ошибки и контекст выполнения
Все вызовы синхронны. Неверный аргумент или формат данных может вызвать ValueError/TypeError; отказ платформы или недоступность сервиса вызывает RuntimeError. Отсутствие элемента/значения даёт None либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.