首页 > 解决方案 > 如何清理 HTML 删除重复的段落?

问题描述

我正在尝试清理正文中重复段落的 html 文件。下面我展示了输入文件和预期的输出。

Input.html https://jsfiddle.net/97ptc0Lh/4/

输出.html https://jsfiddle.net/97ptc0Lh/1/

我一直在尝试使用 BeautifulSoup 使用以下代码,但我不知道为什么不起作用,因为结果列表CleanHtml包含我想删除的重复元素(段落)。

from bs4 import BeautifulSoup

fp = open("Input.html", "rb")
soup = BeautifulSoup(fp, "html5lib")

Uniques = set()
CleanHtml = []

for element in soup.html:
    if element not in Uniques:
        Uniques.add(element)
        CleanHtml.append(element)   

print (CleanHtml)

请有人帮助我实现这个目标。

标签: pythonparsingbeautifulsoup

解决方案


我认为应该这样做:

elms = []
for elem in soup.find_all('font'):
    if elem not in elms:
        elms.append(elem)
    else:
        target =elem.findParent().findParent()
        target.decompose()
print(soup.html)

这应该可以为您提供所需的输出。

编辑:

要仅删除大小不是 4 或 5 的段落,请将else块更改为

 else:
    if elem.attrs['size'] != "4" and elem.attrs['size'] !="5":
        target =elem.findParent().findParent()
        target.decompose()

推荐阅读