如何在Python中将HTML转换为不带标记的文本?

2024-06-26 13:22:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从HTML文档中获取纯文本,同时将<br>元素作为新行。BeautifulSoup.text不处理<br>和换行符。HTML2Text相当不错,但它可以转换为markdown。我还能怎么做呢?在


Tags: text文档文本br元素htmlmarkdownbeautifulsoup
2条回答

我喜欢用下面的方法。在将字符串传递给strip_tags(html)以处理新行之前,可以对该字符串执行手动操作.replace('<br>','\r\n')。在

来自this question

from HTMLParser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

可以去掉标记并用空格替换它们(如果需要):

import re

myString = re.sub(r"<(/)?br(/)?>", "\n", myString)
myString = re.sub(r"<[^>]*>", " ", myString)

相关问题 更多 >