我可以使用BeautifulSoup删除脚本标记吗?

脚本标签及其所有内容都可以使用BeautifulSoup从HTML中删除,还是必须使用正则expression式或其他内容?

>>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup('<script>a</script>baba<script>b</script>', 'lxml') >>> [s.extract() for s in soup('script')] >>> soup baba 

如( 官方文档 )所述,您可以使用extract方法删除与search匹配的所有子树。

 import BeautifulSoup a = BeautifulSoup.BeautifulSoup("<html><body><script>aaa</script></body></html>") [x.extract() for x in a.findAll('script')] 

对于那些可能需要将来参考的人来说,更新的答案是:正确答案是。 decompose()你可以使用不同的方法,但是就地decompose工作。

用法示例:

 soup = BeautifulSoup('<p>This is a slimy text and <i> I am slimer</i></p>') soup.i.decompose() print str(soup) #prints '<p>This is a slimy text and</p>' 

非常有用的摆脱像“脚本”,“img”等碎石碎片。