Python中的Beautifulsoup

2025年1月5日 | 阅读6分钟

Beautifulsoup 是一个强大的 Python 库,专为网络抓取而设计,提供了一种有效的方式来导航、搜索和操作 HTML 和 XML 文档的内容。Beautiful Soup 作为解析库,将原始的 HTML 或 XML 代码转换为结构化的、树状的表示形式,使用户能够轻松地从网页中提取和操作数据。

主要用途

1. 数据提取

用于网络抓取,可以轻松高效地从 HTML 和 XML 文档中提取数据。

2. 解析 HTML 和 XML

Beautiful Soup 将 HTML 或 XML 转换为可导航的树状结构。

3. 树修改

该工具支持修改解析树,允许用户根据需要添加、删除或操作元素。

4. 处理损坏的 HTML

Beautiful Soup 被设计为能够优雅地处理不完美或格式错误的 HTML。

5. 导航和搜索

Beautiful Soup 提供了搜索和导航解析树的方法。用户可以根据标签名称、属性或层级关系等标准来定位标签。

Beautifulsoup 安装

命令

基本用法

让我们通过一个简单的例子来说明 Beautiful Soup 的基本用法。考虑一个场景,我们要从一个示例网页中提取文章的标题。

示例

这是示例程序

程序

输出

Trending Technologies
Preparation
B.Tech / MCA
Cloud Technologies
Testing Tutorials
Python Tutorials
Java Technology
Database Tutorials
Web Technology
PHP Tutorials
Office Tools
.Net Technologies
Popular Tutorials
Miscellaneous Topics
Non-Technical Topics
American
India
Author View
Feedback
100+ Latest Updates
Javatpoint Services
Training For College Campus

说明

我们导入了两个库:一个用于发起请求,另一个用于解析 HTML 和 XML 文档。接下来,我们指定了 URL,它包含了目标网页的网络地址,并请求了该 URL。如果请求成功,响应将被存储。然后,我们使用 Beautiful Soup 从响应中收到的 HTML 内容创建一个解析树。使用 `find_all()` 方法,我们在解析后的 HTML 中找到了具有 `<h2>` 标签的 HTML 元素。最后,我们打印了所有 `h2` 元素。

解析 HTML 和 XML

HTML 解析分析 HTML 文档,以提取其结构化组件,如标签、属性和内容。

示例

这是一个简单的程序

程序

输出

Tag Name: html
Tag Name: head
Tag Name: title
Tag Name: body
Tag Name: h1
Tag Name: p
Tag Name: ul
Tag Name: li
Tag Name: li
Tag Name: li

说明

我们从 bs4 库导入 BeautifulSoup,用于在 Python 中解析 HTML 内容。然后,我们使用 BeautifulSoup 从 HTML 字符串创建了一个解析树。创建解析树后,我们使用 find_all() 方法来定位树中的所有 HTML 元素。最后,我们遍历这些元素并打印它们的标签名称。

树修改

BeautifulSoup 提供了各种方法来修改解析树中的元素。以下是一些你可以用来修改树元素的常用方法:

  • 更改标签名称
  • 修改属性
  • 删除属性
  • 修改文本内容
  • 添加和插入元素
  • 修改字符串

示例

这是一个使用 beautifulsoup 修改树的示例程序。

程序

输出

<html>
 <head>
  <title>
   Sample Page
  </title>
 </head>
 <body>
  <div class="modified-class" id="content">
   <p>
    This paragraph has been modified.
   </p>
   <ul>
    <li>
     C++
    </li>
    <li>
     Java
    </li>
    <li>
     Python
    </li>
    <li>
     C#
    </li>
    <li>
     HTML
    </li>
   </ul>
  </div>
 </body>
</html>

说明

我们首先导入 Beautiful Soup 库,然后创建 HTML 内容并将其转换为 Beautiful Soup 对象。之后,我们指定了段落元素并修改了它的字符串。我们还通过添加一个类来修改 div 元素,最后,我们使用 new_tag 添加了一个新元素。最后,我们使用 prettify() 格式化了树,使我们的 HTML 代码更具可读性和组织性。

导航和搜索

导航和搜索对于使用 Beautiful Soup 从 HTML 或 XML 文档中提取信息至关重要。

示例

这是一个演示如何使用 Beautiful Soup 在 XML 文件中进行导航和搜索的示例程序。

程序

输出

University Name: university
First Course Title: Computer Science
--------------------------------------------------
1. Course Title: Computer Science
   Instructor: Dr. Smith
--------------------------------------------------
2. Course Title: Mathematics
   Instructor: Prof. Johnson
--------------------------------------------------

说明

在这个使用 Beautiful Soup 进行 XML 解析的 Python 脚本中,处理了代表大学课程的 XML 内容。`BeautifulSoup` 实例使用 'xml' 解析器进行配置,以创建解析树。程序直接导航到 XML 结构中的特定元素,例如大学名称和第一门课程的标题。然后,它利用 `find_all` 方法搜索所有 `<title>` 标签的实例,并遍历它们以提取和打印每门课程的相关信息,包括课程标题和讲师。该脚本展示了 Beautiful Soup 如何通过提供直观的方法进行直接导航和基于标签的搜索来简化 XML 解析,使其成为从 XML 文档中提取结构化数据的有效工具。

结论

Beautiful Soup 是一个强大而通用的 Python 库,用于解析和导航 HTML 和 XML 文档。它简化了解析原始 HTML/XML 内容的复杂任务,使其易于提取数据。该库可以处理格式不佳的标记,并提供了丰富的搜索、导航和修改解析树的方法。Beautiful Soup 是网络抓取项目的必备工具包组件,使开发人员能够从网站提取信息、分析 XML 数据和重组内容。