如果Gmail消息包含html,如何从中获取可读文本?
我使用Gmail API,我想从消息中获取所有人类可读的文本,有些消息是MIME文本/html格式的。有“正确”的方法吗?我尝试使用BeautifulSoup4(我使用Python),但有时由于使用标记过滤而缺少文本,否则,有些文本就不可读。我使用了这个示例,并尝试对其进行微调:如果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功能?嗯,我不是很确定,但目前像在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
已经为您做了,我认为这件事不会更容易。谢谢您的回答,我会检查这件事,稍后再写