Beautiful Soup - 删除所有脚本



HTML 中经常使用的标签之一是 <script> 标签。它可以方便地在 HTML 中嵌入客户端脚本,例如 JavaScript 代码。在本章中,我们将使用 BeautifulSoup 从 HTML 文档中删除脚本标签。

<script> 标签有一个对应的 </script> 标签。在这两个标签之间,您可以包含对外部 JavaScript 文件的引用,或者在 HTML 脚本本身中内联包含 JavaScript 代码。

要包含外部 Javascript 文件,使用的语法为:

<head>
   <script src="javascript.js"></script>
</head>

然后,您可以从 HTML 内部调用在此文件中定义的函数。

您可以将 JavaScipt 代码放在 HTML 中的 <script> 和 </script> 代码之间,而不是引用外部文件。如果将其放在 HTML 文档的 <head> 部分,则整个文档树都可以使用该功能。另一方面,如果将其放在 <body> 部分的任何位置,则从该点开始可以使用 JavaScript 函数。

<body>
   <p>Hello World</p>
   <script>
      alert("Hello World")
   </script>
</body>

使用 Beautiful 删除所有脚本标签很容易。您必须从解析树中收集所有脚本标签的列表,并逐个提取它们。

示例

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() 方法,区别在于后者返回已删除的内容,而前者只是销毁它。为了使代码更简洁,您还可以使用列表推导式语法来实现删除了脚本标签的 soup 对象,如下所示:

[tag.decompose() for tag in soup.find_all('script')]
广告

© . All rights reserved.