Основы работы со сбором данных в Datacol лежат в подборе Xpath. Именно при помощи Xpath мы чаще всего собираем ссылки на товары, пагинацию, категории и нужные данные со страниц. Для проблемных сайтов можно использовать регулярные выражения, но в большинстве случаев можно обойтись только подбором Xpath. В этой статье мы расскажем Вам о тонкостях работы с Xpath.
ПРИМЕР 1. Нужно спарсить текст, тег которого содержит несколько классов или класс/id непостоянный.
Цифры в классе «product_123» будут меняться на каждой странице с товаром. В этом случае нам поможет оператор contains:
Данный оператор будет искать вхождение, а не точное соответствие. В кавычках пишем только постоянную часть, в данном случае ‘product_’.
После знака @ не обязательно будет стоять id или class, можно использовать любой атрибут, который есть в теге.
ПРИМЕР 2. Нужно собрать информацию с тега, который НЕ содержит атрибут.
<tr>
<td class="title">data1</td.
<td>data2</td>
</tr>
</table>
Нужно собрать data2 с тегов td, которые не содержат class. Справиться с этой задачей нам поможет оператор not:
он выберет все td, у которых нет атрибута class
или
Данный Xpath используется если есть необходимость привязаться к конкретному классу.
ПРИМЕР 3. Чтобы получить определенный элемент из списка, нужно к xpath добавить номер элемента.
<li>значение 1</li>
<li>значение 2</li>
<li>значение 3</li>
</ul>
Если нужно собрать второй li, Xpath будет следующим:
Если нужен последний элемент, то Xpath будет таким:
ПРИМЕР 4. На сайтах очень часто можно встретить Javascript пагинацию. В данном случае Datacol позволяет собирать данные с помощью сценария. Но не всегда есть ссылка на следующую страницу. Часто присутствует только список страниц: “1 2 3 4 5 6 7 8 9 10 …”. Как в таком случае нажать на следующую?
Пример такого сайта: fedresurs.ru
Суть решения состоит в определении текущего элемента и выборе следующего. Для этого применяем конструкцию:
Мы берем текущий активный элемент, в нашем случае у него class=active. Далее идет оператор following-sibling. Данный оператор выбирает теги, которые идут за текущим. li[1]/a указывает на то, что это должен быть следующий (первый) тег li с вложенным тегом a.
ПРИМЕР 5. Нужно получить тег, у которого есть определенный атрибут, к примеру атрибут target:
<div class="name">Тип1</div>
<span><a target="_blank" href="/link1.html">Значение1</a></span>
<span><a href="/link2.html">Значение2</a></span>
</div>
В данном случае нужно использовать следующий xpath:
Вы соберете ссылку на Значение1.
ПРИМЕР 6. Иногда попадаются сайты, у которых одни и те же данные представлены в разном виде. Например, у одного товара обычная цена, у другого акционная, которая в коде страницы прописана по другому. В данном случае в настройках поля просто укажите несколько xpath выражений, каждое с новой строки. Если Datacol не найдет первое, то перейдет ко второму, а затем перейдет к regex.
Материал для статьи был предоставлен сайтом bestweb4u.net, на котором можно найти много познавательных материалов по тонкостям настройки Datacol.