Python lxml 如何撤销 addnext()

问题描述 投票:0回答:1

我在Python中使用lxml进行网页抓取。当发现一个我认为有用的标签时,我会用下面的命令标记它。

myelement.addnext(etree.XML("<p>"+RandomString+"</p>"))

where RandomString 是一个固定长度的随机字符串。现在,在进行了一定的分析之后,我意识到这并不是必须提取的标签,我希望撤销掉这个 addnext() 命令。

这是我试着做的。

myelement.getparent().remove(etree.XML("<p>"+RandomString+"</p>"))

然而,我得到了以下的错误。

ValueError: Element is not a child of this node.

简单地说,我怎么能反转 addnext 命令?

请注意,我想要的答案只涉及 lxml 不想要任何解决方案,建议我转到以下方面 Beautifulsoup

python web-scraping lxml
1个回答
0
投票

如果我没理解错的话,要想让你达到这个目的,你需要撤除 addnext(). 通过该方法添加的新元素会紧接着添加到原来的 myelement;这就是你要清除的目标。

myelement.addnext(etree.XML("<p>"+RandomString+"</p>"))
target = my_element.getnext()
target.getparent().remove(target)
© www.soinside.com 2019 - 2024. All rights reserved.