Я использую BeautifulSoup для анализа документа HTML со следующей структурой:
<table>
<tr>
<th>Thread</th>
<td> (555EEE555)<br/>
<table>
<tr>
<th>Participants</th>
<td>John Doe<br/>Jane Doe<br/>
</td>
</tr>
</table><br/><br/>
<table>
<tr>
<th>Author</th>
<td>John Doe<br/></td>
</tr>
</table>
<table>
<tr>
<th>Sent</th>
<td>2017-10-16 19:03:23 UTC<br/>
</td>
</tr>
</table>
<table>
<tr>
<th>Body</th>
<td>Test message with some body text<br/>
</td>
</tr>
</table><br/>
<table>
<tr>
<th>Author</th>
<td>Jane Doe<br/></td>
</tr>
</table>
<table>
<tr>
<th>Sent</th>
<td>2017-10-17 08:03:23 UTC<br/>
</td>
</tr>
</table>
<table>
<tr>
<th>Body</th>
<td>Second test message with some body text<br/>
</td>
</tr>
</table><br/>
</td>
</tr>
</table>
Эта структура сообщения повторяется по всему документу.Мне нужно разобрать отдельные сообщения, сгруппировав таблицы Author
, Sent
и Body
.Вот код, который у меня есть:
with open(path) as g:
soup = BeautifulSoup(g, 'html.parser')
table_parent = soup.find('td')
for idx, i in enumerate(table_parent.find_all('table', recursive=False)):
for x in i.find_all('table'):
print 'key: %s | data: %s' % (x.th.get_text(), x.td.get_text())
, который печатает следующее:
key: Current Participants | data: John DoeJane Doe
key: Author | data: John Doe
key: Sent | data: 2017-10-16 19:03:23 UTC
key: Body | data: Test message with some body text
Как мне написать код, который будет проходить по всему документу и группировать каждый Author
,Sent
и Body
соответственно для разбора каждого отдельного сообщения?