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 либо пустой список только там, где это явно описано. Не превращайте любое исключение в пустой успешный результат. Методы внешних сервисов недоступны в преобразовании выгрузки; см. ограничения преобразований и среду.