gpt4 book ai didi

python - Beautifulsoup `
` 来自输入的标签处理

转载 作者:太空宇宙 更新时间:2023-11-03 15:28:52 24 4
gpt4 key购买 nike

在我的 html 中,我有很多 <br>标签(未关闭)。测试 html 如下:

html = r"<html><head><title>s</title></head><body>something <br> <b> another thing</b> " \
r"<br> even more <br> <b> end</b></body></html>"

这是正确的 html 用法吗?简单且“过时”,但仍然合法?

现在我注意到,beatifulsoup 将此 html 转换得一团糟,而不是“只有 1 层深度低于 <body> 的扁平树”,而是变得很多层深,使得分析变得很麻烦。显示 html 还会显示以下内容:

html = r"<html><head><title>s</title></head><body>something <br> <b> another thing</b> " \
r"<br> even more <br> <b> end</b></body></html>"
soup = BeautifulSoup(html, "html.parser")
print(soup)

output: <html><head></head><body>something <br> <b> another thing</b>
<br> even more <br> <b> end</b></br></br></br></body></html>

如果我使用“html5lib”,这种行为会发生变化 - 此时输出将变为(我实际上希望得到):

output: <html><head></head><body>something <br/> <b> another thing</b>
<br/> even more <br/> <b> end</b></body></html>

现在,虽然 html5lib“修复”了这个问题,但这仍然不是我希望的那样:我提供合法的 html代码对吗?那么为什么不同的解析器会给出不同的结果呢?

最佳答案

您可以检查解析器之间的差异 here .

html5lib 尝试通过像浏览器一样读取文档来修复格式不正确的文档,如果您想打印格式良好的 HTML 文档,它是最佳选择。

lxml做同样的事情,但速度更快。很多。

默认解析器不会用于此目的,如果您想使用它进行简单操作,它工作得很好,您想维护文档的结构,请使用上面提到的解析器。

正如BS所述:

There are also differences between HTML parsers. If you give Beautiful Soup a perfectly-formed HTML document, these differences won’t matter. One parser will be faster than another, but they’ll all give you a data structure that looks exactly like the original HTML document. But if the document is not perfectly-formed, different parsers will give different results.

关于python - Beautifulsoup `<br>` 来自输入的标签处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43022298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com