如何在没有Python标记的情况下将HTML转换为文本?

时间:2013-06-09 16:33:07

标签: python html

我需要从HTML文档中获取纯文本,同时将<br>元素视为换行符。 BeautifulSoup.text不会处理<br>和换行符。 HTML2Text非常好,但它转换为markdown。我怎么能接近这个?

2 个答案:

答案 0 :(得分:4)

我喜欢使用以下方法。您可以在字符串上进行手动.replace('<br>','\r\n'),然后将其传递给strip_tags(html)以兑现新行。

来自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()

答案 1 :(得分:0)

您可以删除标签并将其替换为空格(如果需要):

import re

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