我正在尝试更改以下html文档中的title值:
<html lang="en">
<head>
<meta charset="utf-8">
<title id="title"></title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<app-root></app-root>
</body>
</html>
我编写了以下使用lxml的python脚本,以完成任务:
from lxml.html import fromstring, tostring
from lxml.html import builder as E
html = fromstring(open('./index.html').read())
html.replace(html.get_element_by_id('title'), E.TITLE('TEST'))
但是在运行脚本后,我收到以下错误:
ValueError:Element不是此节点的子节点。
应该导致此错误的原因是什么?谢谢。
答案 0 :(得分:2)
'title'标签是'head'节点的子节点。在您的代码中,您在'html'节点上使用replace
,该节点没有'title'元素(不是直接),因此ValueError
。
如果在“head”节点上使用replace
,则可以获得所需的结果。
html.find('head').replace(html.get_element_by_id('title'), E.TITLE('TEST'))