HTML中经常使用的标签之一是`<script>`标签。它允许在HTML中嵌入客户端脚本,例如JavaScript代码。在本章中,我们将使用Beautiful Soup来移除HTML文档中的script标签。
`<script>`标签有一个对应的`</script>`标签。在这两个标签之间,您可以包含对一个外部JavaScript文件的引用,或者将JavaScript代码直接内联在HTML脚本中。
要引用一个外部JavaScript文件,使用的语法如下:
<head>
<script src="javascript.js"></script>
</head>
然后您可以在HTML内部调用此文件中定义的函数。
除了引用外部文件,您也可以在<script>
和</script>
标签之间放置JavaScript代码。如果将其放在HTML文档的<head>
部分内,则在整个文档树中都可以使用该功能。另一方面,如果将其放在<body>
部分的任何位置,则JavaScript函数从该点起可用。
<body>
<p>Hello World</p>
<script>
alert("Hello World")
</script>
</body>
使用Beautiful Soup移除所有script标签很容易。您需要从解析后的树中收集所有script标签的列表,并逐个提取它们。
示例
html = '''
<html>
<head>
<script src="javascript.js"></scrript>
</head>
<body>
<p>Hello World</p>
<script>
alert("Hello World")
</script>
</body>
</html>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
for tag in soup.find_all('script'):
tag.extract()
print(soup)
输出
<html>
<head>
</head>
</html>
您也可以使用decompose()
方法代替extract()
,区别在于后者返回被移除的内容,而前者只是销毁它。为了使代码更加简洁,您还可以使用列表推导式语法来实现移除script标签后的soup对象,如下所示:
[tag.decompose() for tag in soup.find_all('script')]