gpt4 book ai didi

python - lxml.html 以不同方式对待两个相似的输入?

转载 作者:可可西里 更新时间:2023-11-01 13:20:10 25 4
gpt4 key购买 nike

我在使用 lxml.html 时看到一些意外的输出。

import lxml.html as LH

xmlspec = "<?xml version='1.0' encoding='iso-8859-1'?>"

a = LH.fromstring(xmlspec + "<html><body><p>Body</p></body></html>")
b = LH.fromstring(xmlspec + "<html><meta /><body><p>Body</p></body></html>")

print a # says element p while I would have expected html
print b # says element html which is expected

有人可以解释为什么会这样吗?删除 xml 规范后一切正常!有没有正确的方法来处理这个问题?

最佳答案

根据短短 20 多分钟的研究,我得出的结论是:

<?xml version='1.0' encoding='iso-8859-1'?><html><body><p>Body</p></body></html>

不是有效的 HTML,它是有效的 XML。

从技术上讲,

<?xml version='1.0' encoding='iso-8859-1'?><html><meta /><body><p>Body</p></body</html>

也不是有效的 HTML,但 lxml 允许它。更可接受的兼容版本是添加 <head><meta /></head><html>之后这更好,但仍然不是很好(要使其成为有效的 HTML,它需要在 <title> 中有一个 <head>,当然,还有一个不同的文档类型)。

引用资料:

https://validator.w3.org

https://www.xmlvalidation.com/

关于python - lxml.html 以不同方式对待两个相似的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51743583/

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