如果我有这样的话:
<div>
<a>Link</a>
</div>
<div>
<a>Link</a>
</div>
我想删除其中一个div标签(包括所有内容和子标签),因为两个div标签(包括其内容)是相同的。只应比较彼此相邻的标签,并最终删除其中一个标签。这也应该是recursevly。例如,如果我有这样的事情:
<div>
<a>Link</a>
<a>Link</a>
</div>
<div>
<a>Link</a>
</div>
只应移除第一个div中的一个链接。
我尝试使用以下代码解决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)
但代码需要很长时间才能执行。
有没有像我描述的那样快速删除重复标签的方法?
答案 0 :(得分:0)
我的代码工作缓慢,因为我假设.findChildren()
只获得直接的孩子(下面的第一级),但它实际上得到了所有孩子(来自所有级别)。因此,解决方案是从我的代码中删除以下行:
else:
children = item.findChildren()
removeDuplicates(children)