Tah*_*gir 6 python lxml html-parsing python-3.x
这个小程序:
from lxml.html import tostring, fromstring
e = fromstring('''
<html><head>
<link href="/comments.css" rel="stylesheet" type="text/css">
<link href="/index.css" rel="stylesheet" type="text/css">
</head>
<body>
<span></span>
<span></span>
</body>
</html>''')
print (tostring(e, encoding=str)) #unicode on python 2
Run Code Online (Sandbox Code Playgroud)
将打印:
<html><head><link href="/comments.css" rel="stylesheet" type="text/css"><link
href="/index.css" rel="stylesheet" type="text/css"></head><body>
<span></span>
<span></span>
</body></html>
Run Code Online (Sandbox Code Playgroud)
去掉了头部的空格和换行符.即使我们将两个<link>元素放在<body>中,也会发生这种情况.似乎删除了头元素之间的空白文本节点(\ s*).
我怎样才能在<link> s之间保留空格和换行符?(我希望输出与输入完全相同)
最后,我使用 html5lib 来解析 html 并用它生成类似 lxml 的树。
parser = html5lib.HTMLParser(tree=html5lib.getTreeBuilder("lxml"), namespaceHTMLElements=False)