我正在尝试更改以下 html 文档中标题的值:
<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>
Run Code Online (Sandbox Code Playgroud)
为了完成任务,我编写了以下使用 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'))
Run Code Online (Sandbox Code Playgroud)
但运行脚本后,出现以下错误:
ValueError:元素不是此节点的子节点。
应该是什么原因导致这个错误?谢谢。
“title”标签是“head”节点的子节点。在您的代码中,您在“html”节点上使用replace,该节点没有“title”元素(不是直接),因此ValueError.
replace如果在“头”节点上 使用,您可以获得所需的结果。
html.find('head').replace(html.get_element_by_id('title'), E.TITLE('TEST'))
Run Code Online (Sandbox Code Playgroud)