Я получил HTML из писем, которые я собрал, и мне нужно извлечь HTML из текста первого тела без HTML-части сообщений потока.
Существует два варианта того, как электронная почтаможет прибыть:
Когда в электронном письме есть цепочка сообщений, оно всегда сопровождается подписью (To :, From :, и т. д.), которая распознается, когда появляется сообщение.
Если в электронном письме нет цепочки сообщений, это я получил, просто найдя ('p'), а затем выполнив get_text ()
Вот пример того, с чем я работаю:
<html>
<body>
<div class="WordSection1">
<p class="MsoNormal" style="text-autospace:none">
Basic text...
<o:p>
</o:p>
</p>
<p class="MsoNormal" style="text-autospace:none">
the end
</p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal">
<b>
From: XXXX
</b>
<b>
To: XXXX
</b>
<b>
Date: XX/XX/XXXX
</b>
</p>
</div>
</div>
<p align="center" class="MsoNormal" style="text-align:center">
Re: hello world
<o:p>
</o:p>
</p>
<p class="MsoNormal">
bye bye
</p>
</div>
</body>
</html>
То, что я уже сделал, которое получает текст без заботы, если в письме есть нить или нет:
def extract_body(_htmlbody):
body_list = []
if _htmlbody == 'text/calendar':
plain = 'text/calendar'
body_list.append(plain)
else:
parsedhtml = BeautifulSoup(_htmlbody, 'html.parser')
html = '\n'.join([p.getText() for p in parsedhtml.findAll('p')])
body_list.append(html)
return body_list
Я ищу что-то вроде:
body_list = ['Basic text... /nthe end']
body_html = "
<html>
<body>
<div class="WordSection1">
<p class="MsoNormal" style="text-autospace:none">
Basic text...
<o:p>
</o:p>
</p>
<p class="MsoNormal" style="text-autospace:none">
the end
</p>
</body>
</html>
"
thread_list = ['Re: hello world/nbye bye']
thread_html = "
<html>
<body>
<div>
<p align="center" class="MsoNormal" style="text-align:center">
Re: hello world
<o:p>
</o:p>
</p>
<p class="MsoNormal">
bye bye
</p>
</div>
</body>
</html>
"