【发布时间】:2020-03-01 07:10:15
【问题描述】:
我正在尝试清理正文中包含重复段落的 html 文件。下面我展示了输入文件和预期的输出。
Input.html https://jsfiddle.net/97ptc0Lh/4/
Output.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)
请有人帮助我实现这个目标。
【问题讨论】:
-
根据您提供的输出,已删除重复项。究竟是什么问题?
-
我显示的输出是预期的输出。我当前的代码没有这样做,呵呵。
-
我的错。提示:
soup.html只有两个元素,头部和身体。 HTML 文档没有线性结构。这是一棵树。 -
没问题。感谢您的提示。所以,我需要做类似
soup.find_all('p')的事情来让我列出所有段落?如果是,如何在不影响输出顺序的情况下连接其余不是段落的 HTML 元素?
标签: python parsing beautifulsoup