4 个回答
楼上说的clear是可以用的…不过感觉上不是那么符合题主需求,或者说有别的同样实现功能的做法。
clear是BeautifulSoup提供的功能,可以清除某个标签对象的内容,但是并没有删除某个标签,也没有清除这个标签的属性。
有些时候我们希望直接删掉标签内容,或者标签的某个属性,这时只要用Python自带的del函数操作就可以了。(如果是find_all()返回的一个列表,也可以用pop、remove等操作,属于列表的方法。)
比如:
from bs4 import BeautifulSoup
testDoc = '''
<head></head>
<p>p1</p>
<p>p2</p>
<p class='test'>p3</p>
</body>
</html>
bsObj = BeautifulSoup(testDoc, 'lxml')
p = bsObj.find_all('p')
使用clear()方法你会得到:
p[0].clear()
p[1].clear()
print(p)
# 以下为输出
# [<p></p>, <p></p>, <p class='test'>p3</p>]
而使用del()你会得到:
del p[:2]
print(p)