我试图用lxml.html.clean.清洁剂()。我需要去除javascript属性,但希望保留内联css样式。我认为默认设置为style=False:
import lxml.html.clean
cleaner = lxml.html.clean.Cleaner()
但是,当我调用cleaner.clean_html(doc)
会变成
<span>67.51</span>
基本上,风格没有保留下来。我试图补充:
cleaner.style= False
不会有帮助的。在
更新:我在Dreamhost上使用python2.6.6+lxml3.2.4,在本地Macbook上使用python2.7.5+lxml3.2.4。同样的结果。另一件事:在我的html中有一个与javacript相关的属性:
<td style="cursor:pointer;">Ticker</td>
lxml是否会剥离这个与javacript相关的样式而对其他样式一视同仁?希望不会。在
谢谢你的任何见解!在
如果设置
cleaner.safe_attrs_only = False
,则可以使用。在“安全”属性集(^{} )在
lxml.html.defs
模块(source code)中定义,style
不包含在该集合中。在但比
cleaner.safe_attrs_only = False
更好的是使用Cleaner(safe_attrs=lxml.html.defs.safe_attrs | set(['style']))
。这将保留style
,同时防止其他不安全属性。在演示代码:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐