我正在尝试使用lxml.html将'defer'属性放入脚本标记,但是我收到了错误
TypeError:参数必须是字节或unicode,得到'NoneType'
或
TypeError:set()只需2个位置参数(给定1个)
如果我使用
script.set('defer')
根据http://lxml.de/lxmlhtml.html
.set(key,value = None): 设置HTML属性。如果没有给出值,或者值为None,则会创建一个布尔属性,如
<form novalidate></form>
或
<div custom-attribute></div>.
我的代码是
import lxml.html
htmldoc = lxml.html.parse( file )
headElement = htmldoc.find("head")
listOfScripts = headElement.xpath("script")
if len(listOfScripts) > 0:
for script in listOfScripts:
script.set('defer', value=None)
答案 0 :(得分:0)
您链接的文档适用于lxml
的最新版本,您正在谈论的.set()
功能已添加到版本3.7中,但您的版本是&lt; 3.7
查看更改日志here:
3.7.0(2016-12-10)
添加的功能
•GH#201:在HTML元素上调用没有值参数(或None)的方法
.set('attrname')
创建一个没有值的属性,其序列化类似于attrname&gt;。丹尼尔霍尔斯补丁。