当前位置: 首页 > 知识库问答 >
问题:

lxml.html设置错误"TypeError:参数必须是字节或Unicode, get'NoneType'"

凌俊材
2023-03-14

我试图使用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)

共有1个答案

辛盛
2023-03-14

您链接的文档是针对最新版本的lxml,您所说的关于.set()的功能是在3.7版中添加的,但是您的版本是

在这里查看更改日志:

3.7.0 (2016-12-10)

新增功能

•GH#201:对HTML元素调用方法.set('attrname')而不使用value参数(或None)会创建一个没有值的属性,该属性会像attrname一样序列化

 类似资料:
  • 我正在使用pygame创建一个游戏,但遇到了一个错误,我是pygame的新手。我正在使用python 3.8和pycharm社区版2020.1 这是我制作游戏的视频:https://www.youtube.com/watch?v=FfWpgLFMI7w这里是错误: 这是我的密码:

  • 我正在做一个游戏,这里似乎有一些问题。这是我第一次使用sprite床单,如果我的错误很简单,我很抱歉。 对于大量的代码,我提前表示歉意,但不幸的是,我相信问题可能存在于代码中的任何地方。我收到的错误是“TypeError:参数1必须是pygame.Surface,而不是method”。这是指all_sprites.draw(screen)命令。我知道屏幕的格式是正确的,所以不是这样。我的老师说很可

  • 我得到以下错误: http.js:593抛出新的TypeError(“第一个参数必须是字符串或缓冲区”); 当我注释掉显示变量'tot'的行时,代码正在运行,我得到的输出是我传递的2个get参数的级联值。在这种情况下,恰好是1+20=120。我无法将数据转换成数字格式。 事先多谢。

  • 我已经使用stencil一段时间了,正在为它开发一个自定义的主题,我已经安装了nvm和Node5.0和NPM2。我也删除了stencil,并重新安装了所有的内容,包括节点模块和stencil init,但不管什么情况,当运行stencil start时,我仍然会出现下面的错误,我已经在谷歌上搜索了这个问题,但却是空的,所以我希望有人能帮我解决这个问题。提前道谢!

  • 我有一个问题,我做了一个乒乓游戏,但我有一个问题,把分数打印到pyplay窗口。 我得到错误'TypeError:参数1必须是pygame.Surface,而不是str 我在文本中输入了blit,但出现了一个错误。我知道代码乱七八糟,我稍后会修复它