【发布时间】:2015-05-15 00:45:20
【问题描述】:
所以我正在抓取一些内容,并尝试在 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 处理损坏的 HTML,将其留给解析器来理解它。不同的解析器对损坏的 HTML 有不同的意义。尝试在您的内容上使用different parser。
-
做到了!我使用 htlm5lib 而不是默认解析器,这解决了问题。谢谢。
标签: python html regex beautifulsoup