lxml 是否根据上下文解析 HTML?
我使用 lxml
来解析 HTML:
>>> from lxml.html import fromstring, tostring
在某些情况下它会正确解析尾随空格:
>>> html = """<div>some <i>text</i> </div>"""
>>> html == tostring(fromstring(html))
True
但在遇到未知标签(例如下面的 blah
标签)时它似乎会中断。
>>> html = """<div>some <blah>text</blah> </div>"""
>>> html == tostring(fromstring(html))
False
如何修复它以包含所有标签的尾随空格?
I'm using lxml
to parse HTML:
>>> from lxml.html import fromstring, tostring
It parses trailing whitespace correctly in some cases:
>>> html = """<div>some <i>text</i> </div>"""
>>> html == tostring(fromstring(html))
True
But it seems to break when encountering unknown tags (such as the blah
tag below).
>>> html = """<div>some <blah>text</blah> </div>"""
>>> html == tostring(fromstring(html))
False
How can I fix it to include trailing whitespace for all tags?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这似乎是由于 libxml2 的行为造成的(我已从下面的版本中删除了一些错误消息):
我仍在探索解决方法。 libxml2 的 XML 解析器不会表现出这种行为,但我认为它在损坏的 html 上工作会更糟。
This appears to be due to the behavior of libxml2 (I've removed some error messages from the version below):
I am still probing for a workaround. libxml2's XML parser doesn't exhibit this behavior, but I think it would work a lot worse on broken html.
您需要在解析器本身中设置一个标志来删除空格。我在解析 xml 时这样做是这样的:
You need to set a flag in the parser itself to remove whitespace. I've done this when parsing xml like this: