python - 如何清理 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)
请有人帮助我实现这个目标。
解决方案
我认为应该这样做:
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()
推荐阅读
- firebase - Firebase 函数不能始终将用户保存到实时数据库
- html - CSS 按钮未正确对齐
- php - 按键的值对 ArrayObject 进行排序
- r - 一列中的唯一单词总数 - R
- frontend - 为什么在注册表单上使用前端验证而不在登录表单上使用?
- ffmpeg - 使用 Node.js 模块 fluent-ffmpeg 输入要连接的文件列表
- geolocation - 提高 GPS 精度
- javascript - Angular5 的 Canvas JS 问题
- angular - 在角度 4 中获取问题可选参数郊游问题?
- xamarin.forms - Android 上 DependencyService 的 NullReferenceException