Подбор XPath лежит в основе сбора данных в Datacol - его чаще всего используют для сбора ссылок на товары, пагинации, категорий и данных страницы. С проблемными сайтами может помочь regex, но в большинстве случаев достаточно XPath.
Пример 1. Динамические классы и id
Проблема: имя класса содержит изменяющееся число, например product_123.
Решение - использовать оператор contains:
//h1[contains(@class, 'product_')]
Такой подход ищет частичное совпадение, а не точное значение, ориентируясь на постоянную часть имени класса.
Пример 2. Элементы без атрибутов
Проблема: нужно выбрать теги <td>, у которых нет атрибута class.
Решение - применить оператор not:
//table//td[not(@class)]
Или для исключения конкретного класса: //table//td[not(@class, "title")].
Пример 3. Выбор конкретных элементов списка
Проблема: нужно извлечь определённый элемент из списка.
Решение - добавить номер элемента:
//ul/li[2] - второй элемент
//ul/li[last()] - последний элемент
Пример 4. Переход по JS-пагинации
Проблема: нужно найти кнопку перехода на следующую страницу в пронумерованном списке пагинации.
Решение - определить активный элемент и выбрать следующий за ним:
//li[@class="active"]/following-sibling::li[1]/a
Пример 5. Фильтрация по атрибутам
Проблема: нужно выбрать теги с конкретным атрибутом, например target.
Решение - обратиться напрямую к атрибуту:
//a/@target
Пример 6. Несколько форматов данных
Решение - перечислить несколько выражений XPath построчно в настройках поля. Datacol будет последовательно проверять их, пока не найдёт совпадающие данные.