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 解析。
所以我正在抓取一些内容,并尝试在 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 解析。