python lxml add/modify/replace html 元素的 innerHTML
python lxml add/modify/replace innerHTML of an html element
我正在使用 lxml 解析示例 html。像这样:
__dom = lxml.html.fromstring("<html><body><div id='mydiv'></div></body></html>")
我正在尝试以编程方式获取我添加到 html 的元素的 ID,如下所示:
mydiv = __dom.get_element_by_id('mydiv')
mydiv.text = "<p id='myInner'>this is the inner inner text</p>"
myInner= __dom.get_element_by_id("myInner")
添加 P 时已添加。但是当我试图用 get_element_by_id 取回它时,我在 myInner.
上遇到了 keyError
我猜是因为我将 P 添加为文本 - 它没有被解析为 HTML 元素,因此我无法获取它。
所以我的问题真的是:如何使用 lxml add/modify 元素的内部 HTML?
谢谢
如您所说,您正在将字符串传递给 div 的文本属性。我假设您要做的是添加一个新的 P 标记元素作为 div 元素的子元素。您可以将字符串解析为 am lxml 格式,然后将其添加到现有的 html 作为树的一部分
import lxml.html
__dom = lxml.html.fromstring("<html><body><div id='mydiv'></div></body></html>")
mydiv = __dom.get_element_by_id('mydiv')
myhtml = lxml.html.fromstring("<p id='myInner'>this is the inner inner text</p>")
mydiv.insert(0, myhtml)
print(lxml.html.tostring(__dom))
输出
<html><body><div id="mydiv"><p id="myInner">this is the inner inner text</p></div></body></html>
我正在使用 lxml 解析示例 html。像这样:
__dom = lxml.html.fromstring("<html><body><div id='mydiv'></div></body></html>")
我正在尝试以编程方式获取我添加到 html 的元素的 ID,如下所示:
mydiv = __dom.get_element_by_id('mydiv')
mydiv.text = "<p id='myInner'>this is the inner inner text</p>"
myInner= __dom.get_element_by_id("myInner")
添加 P 时已添加。但是当我试图用 get_element_by_id 取回它时,我在 myInner.
上遇到了 keyError我猜是因为我将 P 添加为文本 - 它没有被解析为 HTML 元素,因此我无法获取它。
所以我的问题真的是:如何使用 lxml add/modify 元素的内部 HTML?
谢谢
如您所说,您正在将字符串传递给 div 的文本属性。我假设您要做的是添加一个新的 P 标记元素作为 div 元素的子元素。您可以将字符串解析为 am lxml 格式,然后将其添加到现有的 html 作为树的一部分
import lxml.html
__dom = lxml.html.fromstring("<html><body><div id='mydiv'></div></body></html>")
mydiv = __dom.get_element_by_id('mydiv')
myhtml = lxml.html.fromstring("<p id='myInner'>this is the inner inner text</p>")
mydiv.insert(0, myhtml)
print(lxml.html.tostring(__dom))
输出
<html><body><div id="mydiv"><p id="myInner">this is the inner inner text</p></div></body></html>