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

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

Python SDK: Dom: поиск в HTML

ctx.dom(html, base_url) или response.dom() разбирает уже полученную страницу. CSS-селекторы ищут элементы локально, без нового запроса.

Примеры являются фрагментами тела def run(ctx):. Все методы SDK синхронны, await не нужен.

Как получить объект

dom = ctx.dom('<a href="/product">Product</a>', 'https://example.com')

Методы

q

dom.q(selector) -> Node | None

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.

Результат: Node | None. Объект SDK: используйте его методы, не передавайте целиком в emit.

Найти первый HTML-элемент по CSS-селектору.

result = dom.q('a')

qa

dom.qa(selector) -> list[Node]

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.

Результат: list[Node].

Найти все подходящие HTML-элементы.

result = dom.qa('a')

first

dom.first(selectors) -> Node | None

Аргумент Тип Обязателен Назначение
selectors list[str] Да Упорядоченный список запасных CSS-селекторов.

Результат: Node | None. Объект SDK: используйте его методы, не передавайте целиком в emit.

Попробовать несколько селекторов и взять первое найденное совпадение.

result = dom.first(['.product', 'article'])

text

dom.text(selector, default=None) -> str | None

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
default Any Нет, default в сигнатуре Резервное значение при отсутствии результата.

Результат: str | None.

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

result = dom.text('.product-title', '')

attr

dom.attr(selector, name, default=None) -> str | None

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.
name str Да Имя поля, заголовка, файла, секрета или метрики по назначению метода.
default Any Нет, default в сигнатуре Резервное значение при отсутствии результата.

Результат: str | None.

Прочитать атрибут первого найденного элемента.

result = dom.attr('a', 'href')

max_number

dom.max_number(selector) -> int | None

Аргумент Тип Обязателен Назначение
selector str Да CSS-селектор элемента.

Результат: int | None.

Найти наибольшее число в текстах элементов, например номер последней страницы.

result = dom.max_number('.pagination a')

numbers_by_pattern

dom.numbers_by_pattern(pattern, subject) -> list[int | float]

Аргумент Тип Обязателен Назначение
pattern str Да Регулярное выражение либо URL-маска по назначению метода.
subject str Да Строка, в которой выполняется поиск.

Результат: list[int | float].

Находит числа по регулярному выражению Python. Если есть первая группа захвата, берёт число из неё; иначе из полного совпадения.

result = dom.numbers_by_pattern(r'(\d+)', 'Price 1250')

Ошибки и контекст выполнения

Все вызовы синхронны. Неверный аргумент или формат данных может вызвать ValueError/TypeError; отказ платформы или недоступность сервиса вызывает RuntimeError. Отсутствие элемента/значения даёт None либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.