我使用的策略是用标签的内容替换标签,如果它们是类型的
NavigableString,如果不是,则递归到标签中,并用替换标签的内容
NavigableString,等等。
from BeautifulSoup import BeautifulSoup, NavigableStringdef strip_tags(html, invalid_tags): soup = BeautifulSoup(html) for tag in soup.findAll(True): if tag.name in invalid_tags: s = "" for c in tag.contents: if not isinstance(c, NavigableString): c = strip_tags(unipre(c), invalid_tags) s += unipre(c) tag.replaceWith(s) return souphtml = "<p>Good, <b>bad</b>, and <i>ug<b>l</b><u>y</u></i></p>"invalid_tags = ['b', 'i', 'u']print strip_tags(html, invalid_tags)
结果是:
<p>Good, bad, and ugly</p>
我在另一个问题上也给出了相同的答案。似乎很多。



