Собираем данные с карточки товара
Для примера возьмем uzo com ru
1. Категория
<span class="j-navigator__separator">-</span>
наш xpath //div[@class='j-navigator']/a[2]
2. Подкатегория
<span class="j-navigator__separator">-</span>
наш xpath //div[@class='j-navigator']/a[3]
3. Наименование
<h1 class="j-product__title" itemprop="name">
Заглушка узкая (1 модуль) Zenit (Белый) N2100 BL </h1>
наш xpath //h1[@itemprop='name']
4. Цена
<span class="price j-product__price__current" itemprop="price">169 руб.</span>
руб. заменяем на пустое значение
наш xpath //span[@itemprop='price']
5. Описание
Описание как таковое отсутствует у большинства товаров
Поэтому используем короткое описание
//div[contains(@class,'j-product__page') and contains(@class,'product-details-block')]/div[@class='j-tabs']/div[@id='tab1']/ul/li//strong/span
6. Бренд
<tr class="prod-properties-row" style="background-color: #f1eeee;">
<td class="prod-properties-name">
бренд:
</td>
<td class="prod-properties-val">
ABB
</td>
</tr>
наш xpath //*[normalize-space(text())="бренд:"]/following::td
если на сайте бренд 1 , то проще объявить значение константой и оно будет подставляться автоматически
7. Серии
<tr class="prod-properties-row">
<td class="prod-properties-name">
серии:
</td>
<td class="prod-properties-val">
Niessen Zenit
</td>
</tr>
наш xpath //*[normalize-space(text())="серии:"]/following::td
8. Артикул
<tr class="prod-properties-row" style="background-color: #f1eeee;">
<td class="prod-properties-name">
артикул:
</td>
<td class="prod-properties-val">
N2100 BL
</td>
</tr>
наш xpath //*[normalize-space(text())="артикул:"]/following::td
9. Материал
<tr class="prod-properties-row">
<td class="prod-properties-name">
материал:
</td>
<td class="prod-properties-val">
пластик
</td>
</tr>
наш xpath //*[normalize-space(text())="материал:"]/following::td
10. Цвет
<tr class="prod-properties-row" style="background-color: #f1eeee;">
<td class="prod-properties-name">
цвет:
</td>
<td class="prod-properties-val">
белый
</td>
</tr>
наш xpath //*[normalize-space(text())="цвет:"]/following::td
11. Тип
<tr class="prod-properties-row">
<td class="prod-properties-name">
тип:
</td>
<td class="prod-properties-val">
Заглушки
</td>
</tr>
наш xpath //*[normalize-space(text())="тип:"]/following::td
12. Тип Конструкции
<tr class="prod-properties-row" style="background-color: #f1eeee;">
<td class="prod-properties-name">
тип конструкции:
</td>
<td class="prod-properties-val">
механизм с накладкой
</td>
</tr>
наш xpath //*[normalize-space(text())="тип конструкции:"]/following::td
13. Способ монтажа
<tr class="prod-properties-row">
<td class="prod-properties-name">
способ монтажа:
</td>
<td class="prod-properties-val">
встроенный монтаж
</td>
</tr>
наш xpath //*[normalize-space(text())="способ монтажа::"]/following::td
14. Степень защиты (ip):
<tr class="prod-properties-row" style="background-color: #f1eeee;">
<td class="prod-properties-name">
степень защиты (ip):
</td>
<td class="prod-properties-val">
IP20
</td>
</tr>
15 Фото
<img class="mg-product-image" data-transfer="true" data-product-id="528" src="https://uzo.com.ru/uploads/product/500/528/thumbs/70_6+.jpg" alt="" title="" data-magnify-src="https://uzo.com.ru/uploads/product/500/528/6+.jpg" style="cursor: crosshair; display: block; position: absolute;">
наш xpath //img[@class='mg-product-image']@src
16. Ссылки на карточки товаров
<div class="j-product__name">
<a href="https://uzo.com.ru/abb-niessen-zenit/mehanizmy-zenit-plastik/zaglushka-uzkaya-1-modul-zenit-belyy-n2100-bl">Заглушка узкая (1 модуль) Zenit (Белый) N2100 BL</a>
</div>
наш xpath //div[@class='j-product__name']/a
17. Пагинация
<li class="current"><a class="active page_1" href="/abb-niessen-zenit?page=1">1</a></li>
наш xpath //a[contains(@class, 'linkPage page_')]
Заключение
Это приблизительные данные для примера с одной карточки. Если ваша программа плохо работает с лишними пробелами, то скорее всего каждую характеристику придется вносить в код в ручную