Как спарсить значение массы из таблицы характеристик товара?

Есть такой отрывок кода:

<td class="param-head">
<dl>
<dt class="n-product-spec__name">
<span class="n-product-spec__name-inner">Диаметр мембранного бака</span>
</dt>
<dd class="n-product-spec__value">
<span class="n-product-spec__value-inner">229 мм</span>
</dd>
</dl>
</td>
<td class="param-head">
<dl>
<dt class="n-product-spec__name">
<span class="n-product-spec__name-inner">Масса</span>
</dt>
<dd class="n-product-spec__value">
<span class="n-product-spec__value-inner">14 кг</span>
</dd>
</dl>
</td>

Мне нужно именно значение массы: 14 кг.

Не пойму, как написать путь в запросе парсинга XPath, в связи с тем что все классы повторяются для разных атрибутов, и применять порядковый номер тоже не вариант — в разных товарах масса под разным порядковым номером.


Ответы (1 шт):

Автор решения: splash58

Разбил на строчки для читаемости.

//dt[@class="n-product-spec__name" and span[@class="n-product-spec__name-inner" and .="Масса"]]
/following-sibling::dd[1][@class="n-product-spec__value"]
//span[@class="n-product-spec__value-inner"]/text()
  1. Ищем dt со словом Масса
  2. Берем первый следующий dd нужного класса
  3. Выбираем значение span
→ Ссылка