XPath для извлечения текста из таблицы по заголовку

Ответ дан с помощью GPT-4o Mini от GPT4oMini.app

Вопрос:

Сформируй xpath для взятия текста "Юг Руси, АО" из элемента <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><tbody><tr><td style="padding:5px;">Юг Руси, АО<td>пшеница 3 класса протеин 15,3% и выше, клейк. 23%, натура 770г/л, сорн. примесь 2%, зерн. примесь 5%</td><td>16,30 руб./кг</td><td>+10% НДС</td></tr></tbody></table>, где индексы колонок и содержание могут меняться, а ориентиром должно служить наименование колонки th

Ответ:

Для извлечения текста "Юг Руси, АО" из таблицы, где индексы колонок и содержание могут меняться, можно использовать XPath, который будет ориентироваться на заголовок колонки. В данном случае заголовок колонки, который соответствует нужному значению, отсутствует, поэтому мы будем использовать индекс заголовка "Базис".

Вот пример XPath, который находит текст в первой колонке, основываясь на заголовке "Базис":

//table[@class='table']//th[text()='Базис']/../following-sibling::td[1]/text()

Объяснение:

  • //table[@class='table'] — выбирает таблицу с классом "table".
  • //th[text()='Базис'] — находит заголовок колонки с текстом "Базис".
  • /../ — поднимается на уровень выше к родительскому элементу <tr>.
  • following-sibling::td[1] — выбирает первую ячейку <td> (которая соответствует колонке "Базис").
  • /text() — извлекает текст из выбранной ячейки.

Этот XPath будет работать, даже если порядок колонок изменится, при условии, что заголовок "Базис" останется на месте.