Beautiful Soup 删除标签错误

Beautiful Soup Remove Tag Error

所以我正在抓取一些内容,并尝试在 python 中删除带有 beautifulsoup 的 html 标签,但保留内容。例如,给定:

<p>Hello, how <b>are</b> you</p>

我想要输出:

Hello, how are you

通常,我会使用get_text 方法。问题是,显然我正在抓取的某些页面中存在 html 错误。例如:

<p>Hello, how </b><b>are</b> you</p>

发生这种情况时,get_text() 最终会删除我想要的大部分文本。我试着用正则表达式来做这件事,结果遇到了同样的问题:

    description = re.sub("<.[^/<>]*>", "", str(description))    
    description = re.sub("</.[^/<>]*>", "", str(description))   

有人知道解决这个问题的方法吗?提前致谢。

BeautifulSoup树将所有元素表示为对象;你不能使用正则表达式来 'fix' 破坏 HTML 树建成后。

BeautifulSoup 将其留给解析器来构建树,由解析器决定如何处理损坏的 HTML。不同的解析器处理 broken HTML 的方式不同。

您应该尝试 different parsers 您的输入,看看他们将如何处理您的输入。标准 html.parser 选项处理损坏 HTML 的效果不如其他选项,而 html5lib 选项最接近现代浏览器处理损坏 HTML 的方式,尽管速度较慢比 lxml 会处理 HTML 解析。