lxml:clean_html用div替换html标签?

yka*_*ich 5 python lxml libxml2

我正在使用 lxml 3.1.0 (使用 easy_install 安装),并看到奇怪的结果:

> from lxml.html.clean import clean_html
> clean_html("<html><body><h1>hi</h1></body></html>")
'<div><body><h1>hi</h1></body></div>'
Run Code Online (Sandbox Code Playgroud)

html标签正在被替换为div

示例 html 也会发生同样的情况,如下所示:http://lxml.de/lxmlhtml.html#cleaning-up-html

是什么赋予了?我是否遇到了 lxml 的错误,或者与 libxml2 版本不兼容,或者这是预期的?

cra*_*ulf 5

我认为你需要一个Cleaner不受影响page_structure的:

>>> from lxml.html.clean import Cleaner                                                           
>>> cleaner = Cleaner(page_structure=False)                                          
>>> cleaner.clean_html("<html><body><h1>hi</h1></body></html>")
'<html><body><h1>hi</h1></body></html>' 
Run Code Online (Sandbox Code Playgroud)

如此处所述,page_structureTrue默认情况。我怀疑您提供的网站上的文档不正确或已过时。

Edit#1:另一个确认这是预期行为的信息可以在源代码中的测试中找到。已提交拉取请求以更正文档。

Edit#2:自 2013 年 4 月 28 日起,拉取请求已合并到主控中。