Python 这个html5lib脚本是怎么回事?

Python 这个html5lib脚本是怎么回事?,python,html5lib,Python,Html5lib,尝试处理一个非常简单的html5脚本并使用html5lib进行渲染 import html5lib html = '''<!DOCTYPE html> <html lang="en"> <head> <title>Hi</title> </head> <body> <script src="a.js"></script>

尝试处理一个非常简单的html5脚本并使用html5lib进行渲染

import html5lib

html = '''<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Hi</title>
    </head>
    <body>
        <script src="a.js"></script>
        <script src="b.js"></script>
    </body>
</html>
'''

parser = html5lib.HTMLParser(tree = html5lib.treebuilders.getTreeBuilder("lxml"))
walker = html5lib.treewalkers.getTreeWalker("lxml")
serializer = html5lib.serializer.htmlserializer.HTMLSerializer()

document = parser.parse(html)
stream = walker(document)
theHTML = serializer.render(stream)

print theHTML
导入html5lib
html=“”
你好
'''
解析器=html5lib.HTMLParser(tree=html5lib.treebuilders.gettreebuilders(“lxml”))
walker=html5lib.treewalkers.getTreeWalker(“lxml”)
serializer=html5lib.serializer.htmlserializer.htmlserializer()
document=parser.parse(html)
stream=walker(文档)
theHTML=serializer.render(流)
打印HTML
输出如下所示:

<!DOCTYPE html><html lang=en><head>
        <title>Hi</title>
    </head>
    <body>
        <script src=a.js></script>
        <script src=b.js></script>

你好

是的。就在中途被切断了。将树生成器从lxml更改为dom没有任何作用。调整HTML会更改输出,但它仍然非常损坏。

因此,键似乎是
省略\u optional\u tags=False
,不知何故,缺少了它会吃掉输出的结尾

parser = html5lib.HTMLParser(tree = html5lib.treebuilders.getTreeBuilder("lxml"))
document = parser.parse(html)    
walker = html5lib.treewalkers.getTreeWalker("lxml")
stream = walker(document)
s = serializer.htmlserializer.HTMLSerializer(omit_optional_tags=False)
output_generator = s.serialize(stream)
for item in output_generator:
         print item


<!DOCTYPE html>
<html lang=en>
<head>


<title>
Hi
</title>


</head>


<body>


<script src=a.js>
</script>


<script src=b.js>
</script>




</body>
</html>
>>>
parser=html5lib.HTMLParser(tree=html5lib.treebuilders.gettreebuilders(“lxml”))
document=parser.parse(html)
walker=html5lib.treewalkers.getTreeWalker(“lxml”)
stream=walker(文档)
s=serializer.htmlserializer.htmlserializer(省略可选标记=False)
输出\u生成器=s.serialize(流)
对于输出_生成器中的项目:
打印项目
你好
>>>

因此键似乎是
省略\u optional\u tags=False
不知何故,它会吃掉输出的末尾

parser = html5lib.HTMLParser(tree = html5lib.treebuilders.getTreeBuilder("lxml"))
document = parser.parse(html)    
walker = html5lib.treewalkers.getTreeWalker("lxml")
stream = walker(document)
s = serializer.htmlserializer.HTMLSerializer(omit_optional_tags=False)
output_generator = s.serialize(stream)
for item in output_generator:
         print item


<!DOCTYPE html>
<html lang=en>
<head>


<title>
Hi
</title>


</head>


<body>


<script src=a.js>
</script>


<script src=b.js>
</script>




</body>
</html>
>>>
parser=html5lib.HTMLParser(tree=html5lib.treebuilders.gettreebuilders(“lxml”))
document=parser.parse(html)
walker=html5lib.treewalkers.getTreeWalker(“lxml”)
stream=walker(文档)
s=serializer.htmlserializer.htmlserializer(省略可选标记=False)
输出\u生成器=s.serialize(流)
对于输出_生成器中的项目:
打印项目
你好
>>>

我们无法使用您的代码进行复制。”代码中甚至没有定义s。想用不会出错的代码编辑您的响应吗?啊。因此,键似乎是ommit_optional_tags=False——不知何故,由于缺少该键,它会吃掉输出的末尾。我们无法使用代码进行复制。”代码中甚至没有定义s。想用不会出错的代码编辑您的响应吗?啊。因此,键似乎是ommit_optional_tags=False——不知何故,由于缺少了它,它会吃掉输出的末尾。