1

BeautifulSoup 3 有一个很好的特性,它不会尝试将<textarea>标签的内容解释为 html - 它会将其引用为文本。QUOTE_TAGS通过修改属性,其他标签可以具有此行为。这是一个说明这如何有用的说明。

在 BeautifulSoup 4 中,没有QUOTE_TAGS属性,而且我认为如果不继承html.parser自己的子类,就无法获得相同的功能。我错过了什么吗?您将如何使用 BS4 解决上面链接的问题?

4

1 回答 1

1

Beautiful Soup 4 没有 QUOTE_TAGS 因为它没有自己的解析器:它依赖于外部解析器。不同的解析器以不同的方式处理相同的标记,您已经发现了这些差异之一。

lxml 解析器和 Python 的内置 html.parser 都将 a 的内容<textarea>视为 HTML 标记。html5lib 解析器将 a 的内容<textarea>视为原始数据。告诉 Beautiful Soup 使用 html5lib 会给你想要的结果:

BeautifulSoup(markup, "html5lib")

当然,您需要安装 html5lib。

于 2013-05-06T17:22:56.913 回答