Сформируй 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>, требуется учесть то, что индексы колонок и текст в содержании ячеек может меняться
Для парсинга таблицы с использованием XPath, можно использовать следующий подход, который не зависит от индексов колонок и текста в содержании ячеек. Вот пример XPath, который выбирает все строки таблицы и извлекает данные из каждой ячейки:
//table[@class='table']/tbody/tr
Этот XPath выбирает все строки (tr
) в теле таблицы (tbody
) с классом table
. Теперь, чтобы извлечь данные из каждой ячейки (td
) в каждой строке, можно использовать следующий XPath:
//table[@class='table']/tbody/tr/td
Если вам нужно получить данные из каждой ячейки в виде списка, вы можете использовать следующий подход в вашем коде (например, на Python с использованием библиотеки lxml
):
from lxml import html
# Пример HTML-кода
html_content = '''
<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>
<td>пшеница 3 класса протеин 15,3% и выше, клейк. 23%, натура 770г/л, сорн. примесь 2%, зерн. примесь 5%</td>
<td>16,30 руб./кг</td>
<td>+10% НДС</td>
</tr>
</tbody>
</table>
'''
# Парсинг HTML
tree = html.fromstring(html_content)
# Извлечение данных
rows = tree.xpath('//table[@class="table"]/tbody/tr')
for row in rows:
cells = row.xpath('./td/text()')
print([cell.strip() for cell in cells])
Этот код извлечет данные из каждой ячейки таблицы и выведет их в виде списка. Обратите внимание, что strip()
используется для удаления лишних пробелов.