如果Gmail消息包含html,如何从中获取可读文本?

如果Gmail消息包含html,如何从中获取可读文本?,html,python-3.x,parsing,gmail,gmail-api,Html,Python 3.x,Parsing,Gmail,Gmail Api,我使用Gmail API,我想从消息中获取所有人类可读的文本,有些消息是MIME文本/html格式的。有“正确”的方法吗?我尝试使用BeautifulSoup4(我使用Python),但有时由于使用标记过滤而缺少文本,否则,有些文本就不可读。我使用了这个示例,并尝试对其进行微调: 也许你知道,如何进行正确的解析,或者如何使用Gmail API功能?嗯,我不是很确定,但目前像在link(检查问题)这样的代码对我来说只需稍加修改就可以了,如果它坏了,我会写在这里 def tag_visible(el

我使用Gmail API,我想从消息中获取所有人类可读的文本,有些消息是MIME文本/html格式的。有“正确”的方法吗?我尝试使用BeautifulSoup4(我使用Python),但有时由于使用标记过滤而缺少文本,否则,有些文本就不可读。我使用了这个示例,并尝试对其进行微调:


也许你知道,如何进行正确的解析,或者如何使用Gmail API功能?

嗯,我不是很确定,但目前像在link(检查问题)这样的代码对我来说只需稍加修改就可以了,如果它坏了,我会写在这里

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]',  'yatag']:  # 'a'
        return False
    if isinstance(element, Comment):
        return False
    return True


def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)
    return u" ".join(t.strip() for t in visible_texts)

在您使用python时,我们有一个名为
html2text
的包,该包将从html中提取文本,但在结果出来后,您需要使用一些基本正则表达式来消除\n、\t、\r之类的内容,这些内容将出现在我们提取的文本中。

当然,即使现在也可以了,我想要这个任务的更稳定的解决方案Gmail不解析html,它以一个简单的字符串获取代码片段。如果
BeautifulSoup
已经为您做了,我认为这件事不会更容易。谢谢您的回答,我会检查这件事,稍后再写