为了账号安全,请及时绑定邮箱和手机立即绑定

如何删除lxml中的标签?

如何删除lxml中的标签?

慕桂英3389331 2021-07-04 14:14:45
首先,我关注了这个问题,但我仍然对 remove 方法有问题。tag.getparent().remove(tag)我使用这段代码删除 了此网页中具有属性name="2" 和 id = "2" 的锚标记当该行被执行时,我仍然能够看到标签及其属性,当我遍历所有孩子时,我仍然能够看到我删除的元素remove 方法究竟做了什么,为什么被删除的标签仍然存在?这是该行执行后调试器的屏幕截图。
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

当您从其父节点中删除节点时,该节点本身仍然存在,但只是与父节点分离。这允许您将“已删除”节点附加到不同的父节点。但是,如果您不将节点附加到新的父节点,那么从根节点的角度来看,该节点与删除一样好。


为了保留被移除的标签节点的子节点,你可以像这样在相同的索引处将它们修剪到标签的父节点:


parent = tag.getparent()

index = parent.index(tag)

for child in tag.getchildren()[::-1]: # in reverse order so that we can keep inserting at the same index while preserving the original order

    tag.remove(child)

    parent.insert(index, child)

parent.remove(tag)

或者您可以简单地使用该drop_tag方法:


tag.drop_tag()


查看完整回答
反对 回复 2021-07-21
  • 1 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信