переделай xpath //div[contains(text(),'Пшеница')]//following::table[1]//tr для элемента <table class="table"> <thead> <tr> <th style="white-space: nowrap;">Базис</th> <th style="white-space: nowrap;">Номенклатура</th> <th style="white-space: nowrap;">Цена без НДС</th> <th style="white-space: nowrap;">С НДС</th> </tr> </thead> чтобы брались только те td, которые соответствуют th "Базис", при том, что структура таблицы может измениться
Чтобы выбрать только те <td>
, которые соответствуют заголовку <th>
"Базис", можно использовать XPath, который будет искать <td>
в строках таблицы, где индекс соответствует индексу заголовка "Базис".
Предположим, что "Базис" находится в первом столбце (индекс 0). В таком случае, XPath будет выглядеть следующим образом:
//div[contains(text(),'Пшеница')]//following::table[1]//tr/td[1]
Если структура таблицы может измениться, и вы хотите сделать XPath более устойчивым, вы можете использовать функцию position()
для поиска нужного столбца по заголовку. Вот пример, как это можно сделать:
//div[contains(text(),'Пшеница')]//following::table[1]//tr/td[position() = //div[contains(text(),'Пшеница')]//following::table[1]//th[text()='Базис']/position()]
Этот XPath ищет все <td>
, которые находятся в строках таблицы, и выбирает только те, которые соответствуют позиции заголовка "Базис".
Обратите внимание, что данный XPath может быть не самым оптимальным в зависимости от структуры вашего HTML, и его может потребоваться адаптировать под конкретные условия.