如何使用BeautifulSoup去除HTML中的script和style标签?

8 投票
1 回答
5114 浏览
提问于 2025-04-16 05:05

我有一个简单的脚本,主要是获取一个HTML页面,然后用BeautifulSoup这个工具来去掉所有的脚本和样式标签。接着,我想把处理后的HTML结果传给另一个方法。有没有简单的方法可以做到这一点?我看了一下BeautifulSoup.py,似乎还没找到合适的办法。

soup = BeautifulSoup(html)
for script in soup("script"):
    soup.script.extract()

for style in soup("style"):
    soup.style.extract()
contents = soup.html.contents
text = loader.extract_text(contents)

contents = soup.html.contents 这个代码,只能得到一个列表,里面的内容都是以类的形式定义的。有没有什么方法可以直接返回处理后的原始HTML?还是说我得自己遍历这个contents列表,把HTML拼接起来,同时排除掉脚本和样式标签?

或者有没有更好的解决方案来实现我想要的效果?

1 个回答

9

unicode( soup ) 这个命令会给你返回 HTML 代码。

另外,你想要的内容是这个:

for elem in soup.findAll(['script', 'style']):
    elem.extract()

撰写回答