BeautifulSoup 3 有一个很好的特性,它不会尝试将<textarea>
标签的内容解释为 html - 它会将其引用为文本。QUOTE_TAGS
通过修改属性,其他标签可以具有此行为。这是一个说明这如何有用的说明。
在 BeautifulSoup 4 中,没有QUOTE_TAGS
属性,而且我认为如果不继承html.parser
自己的子类,就无法获得相同的功能。我错过了什么吗?您将如何使用 BS4 解决上面链接的问题?
BeautifulSoup 3 有一个很好的特性,它不会尝试将<textarea>
标签的内容解释为 html - 它会将其引用为文本。QUOTE_TAGS
通过修改属性,其他标签可以具有此行为。这是一个说明这如何有用的说明。
在 BeautifulSoup 4 中,没有QUOTE_TAGS
属性,而且我认为如果不继承html.parser
自己的子类,就无法获得相同的功能。我错过了什么吗?您将如何使用 BS4 解决上面链接的问题?
Beautiful Soup 4 没有 QUOTE_TAGS 因为它没有自己的解析器:它依赖于外部解析器。不同的解析器以不同的方式处理相同的标记,您已经发现了这些差异之一。
lxml 解析器和 Python 的内置 html.parser 都将 a 的内容<textarea>
视为 HTML 标记。html5lib 解析器将 a 的内容<textarea>
视为原始数据。告诉 Beautiful Soup 使用 html5lib 会给你想要的结果:
BeautifulSoup(markup, "html5lib")
当然,您需要安装 html5lib。