我正在编写一个使用lxml.html解析网页的脚本。在我的时间里,我做了一些漂亮的工作,但是现在由于它的速度,我正在尝试使用lxml。
我想知道库中最明智的方法是做与Javascript的InnerHtml等价的事情,即检索或设置标记的完整内容。
A title
Some text
因此,InnerHtml是:
A title
Some text
我可以使用hacks(转换成string/regex等)来实现,但我假设有一种正确的方法可以使用由于不熟悉而丢失的库来实现。谢谢你的帮助。
编辑:感谢pobk如此快速有效地向我展示了这方面的方法。对任何人来说,这就是我的结局:from lxml import html
from cStringIO import StringIO
t = html.parse(StringIO(
"""
A title
Some text
Untagged text
Unclosed p tag
"""))
root = t.getroot()
body = root.body
print (element.text or '') + ''.join([html.tostring(child) for child in body.iterdescendants()])
请注意,lxml.html解析器将修复未关闭的标记,因此如果这是一个问题,请小心。