以这样的基本HTML为例。在截断并删除它之前,如何删除所有2个节点以上的子节点。
<html>
<head>
<title></title>
<meta />
<meta />
<link />
</head>
<body>
<div>
<div>
<a></a>
<a></a>
<a></a>
</div>
<span>
<h1>
<li></li>
<li></li>
</h1>
</span>
</div>
</body>
会变成:
<html>
<head>
<title></title>
<meta />
<meta />
<link />
</head>
<body>
<div>
<div></div>
<span></span>
</div>
</body>
答案 0 :(得分:1)
我们的想法是递归迭代所有元素并倒数父母:
from bs4 import BeautifulSoup
from urllib2 import urlopen
data = """your html goes here"""
depth = 5
soup = BeautifulSoup(data)
for tag in soup.find_all():
if len(list(tag.parents)) == depth:
tag.extract()
print soup.prettify()
打印:
<html>
<head>
<title>
</title>
<meta/>
<meta/>
<link/>
</head>
<body>
<div>
<div></div>
<span></span>
</div>
</body>
</html>
答案 1 :(得分:0)
可能是这样的:
for child in body.children:
for element in child.children:
element.clear()