【问题标题】:Python: Remove html tag including content if next sibling is identicalPython:如果下一个兄弟姐妹相同,则删除包含内容的html标签
【发布时间】:2016-10-04 19:13:56
【问题描述】:

如果我有这样的事情:

<div>
<a>Link</a>
</div>
<div>
<a>Link</a>
</div>

我想删除其中一个 div 标签(包括所有内容和子标签),因为这两个 div 标签,包括它们的内容,是相同的。仅应比较彼此相邻的标签,并最终删除其中一个。这也应该递归工作。例如,如果我有这样的事情:

<div>
<a>Link</a>
<a>Link</a>
</div>
<div>
<a>Link</a>
</div>

只应删除第一个 div 中的一个 a 链接。

我尝试用 BeautifulSoup 解决这个问题,代码如下:

def removeDuplicates(items):
    for item in items:
        if item==item.nextSibling:
            item.extract()
        else:
            children = item.findChildren()
            removeDuplicates(children)

body = soup.find('body')
items = body.findChildren()
removeDuplicates(items)

但是代码需要很长时间才能执行。

如我所述,有什么快速删除重复标签的方法吗?

【问题讨论】:

    标签: python tags beautifulsoup


    【解决方案1】:

    我的代码运行缓慢,因为我假设 .findChildren() 仅获取直接子级(以下第一级),但它实际上获取所有子级(来自所有级别)。因此,解决方案是从我的代码中删除以下行:

        else:
            children = item.findChildren()
            removeDuplicates(children)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 2012-10-28
      • 1970-01-01
      • 2014-07-12
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多