Но я не знаю, как перебирать таблицу по узлам.
BeautifulSoup
* find_all
предоставляет вам последовательность объектов тегов, которые вы можете циклически просматривать.
Также обратите внимание, что в вашей html-таблице есть проблемы с синтаксисом:
<th class="col>MyGrp1</th>
- пропущенная цитата
<td class="col data"">Item1.2 Value</td>
- двойные кавычки
Итак, при условии, что sample
является вашей html-таблицей в виде строчки, и она имеет действительный html, вот пример того, что вы можете сделать:
from bs4 import BeautifulSoup as bs
soup = bs(sample, 'lxml-html')
trs = soup.find_all('tr')
group = None # in case there are items before the first group
for tr in trs:
if 'grp' in tr.get('class'):
print(tr.th.text)
elif 'item' in tr.get('class'):
label = tr.th.text
value = tr.td.text
print('{} {}'.format(label, value))