使用 BeautifulSoup 查找标签的兄弟标签

pythonserver side programmingprogramming更新于 2024/2/18 19:39:00

可以使用称为网络抓取的有用方法从网站中提取数据,用于网络抓取的流行 Python 包是 BeautifulSoup,它提供了一种解析 HTML 和 XML 文档的简单方法,使我们能够从网站中提取某些数据。在抓取网页时,查找标签的兄弟标签是一项常见的任务,它可以定义为标签的兄弟标签是任何与主标签具有相同父级的附加标签。在本篇博客文章中,我们将介绍如何使用 BeautifulSoup 来定位标签的兄弟标签。

安装和设置

要使用 BeautifulSoup,您必须首先使用 Python 的包管理器 pip 安装它。

pip install beautifulsoup4

安装后,您可以在 Python 代码中导入 BeautifulSoup −

from bs4 import BeautifulSoup

语法

使用 BeautifulSoup 查找标签兄弟标签的语法如下 −

siblings = tag.findNextSiblings()

这里,tag 是我们要查找其兄弟标签的标签find,siblings 是该标签所有兄弟元素的列表。

算法

  • 首先使用 BeautifulSoup 解析 HTML 或 XML 内容。

  • 将文档传递给 BeautifulSoup 函数即可完成此操作。

  • 使用 find() 函数定位您要查找其兄弟元素的标签。

  • 要定位该标签的每个兄弟元素,请使用 findNextSiblings() 函数。

示例 1

from bs4 import BeautifulSoup
html = """
<html>
<body>
   <div>
      <p>Tutorials Point Python Text 1</p>
      <p>Tutorials Point Python Text 2</p>
      <p>Tutorials Point Python Text 3</p>
   </div>
</body>
</html>
"""
soup = BeautifulSoup(html, "html.parser")
tag = soup.find_all('p')[1]
siblings = tag.findNextSiblings()
print(siblings)

输出

[<p>Tutorials Point Python Text 3</p>]

示例 2

from bs4 import BeautifulSoup
html = """
<html>
<body>
   <div>
      <h1>Just A Simple Test Heading 1</h1>
      <p>Tutorials Point Python Text 1</p>
      <h2>Just A Simple Test Heading 2</h2>
      <p>Tutorials Point Python Text 2</p>
      <h3>Heading 3</h3>
      <p>Tutorials Point Python Text 3</p>
   </div>
</body>
</html>
"""

soup = BeautifulSoup(html, "html.parser")
tag = soup.find('h2')
siblings = tag.find_next_siblings()
print(siblings)

输出

[<p>Tutorials Point Python Text 2</p>, <h3>Heading 3</h3>, <p>Tutorials Point Python Text 3</p>]

此处,BeautifulSoup 用于提取网页的 HTML 内容,然后使用 find() 方法在 HTML 中定位"h2"标记。find_next_siblings() 方法可以方便地定位 'h2' 标记的所有同级标记。

  • 首先导入必要的模块 BeautifulSouprequests

  • 使用请求模块向要抓取的网站的 URL 提交 GET 请求。使用响应对象的 .text 属性提取页面的 HTML 内容。

  • 调用 BeautifulSoup 函数时,传递 HTML 文本并指定 "html.parser" 解析器。

  • 使用 find() 函数查找 'h2' 标签,然后将结果保存在标签变量中。

  • 使用 find_next_siblings() 方法查找 'h2' 标签的所有兄弟标签,并将其存储在 brothers 变量中。

  • 打印兄弟标签

示例 3

from bs4 import BeautifulSoup
import request

#向 URL 发送 GET 请求
url = 'https://example.com'
response = request.get(url)

# 提取 HTML 内容
html = response.text

# 使用 BeautifulSoup 解析 HTML 内容
soup = BeautifulSoup(html, "html.parser")

# 查找 'h2' 标签
tag = soup.find('h2')

# 查找 'h2' 标签的兄弟标签
siblings = tag.find_next_siblings()

# 打印兄弟标签
print(siblings)

应用程序

  • 网页抓取 − 如果您尝试从网页中提取信息,您可能希望在提取兄弟标签之前找到网页上的特定标签。

  • 数据分析 − 如果您有一个包含数据的大型 HTML 文件,您可能希望找到特定标签,然后删除它们的兄弟标签以进行进一步调查。

  • 自动测试 - 在评估在线应用程序时,可以搜索特定标签,然后检查它们的兄弟标签是否满足特定要求。

结论

Python 包 BeautifulSoup 使从 HTML 和 XML 文件中提取数据变得简单。我们可以快速发现特定标签的兄弟标签,并使用 find next_siblings() 函数收集重要数据。此方法有多种用途,包括自动测试、数据分析和在线抓取。此外,BeautifulSoup 为我们提供了几种方法,如 find_all()、find_parent()find_previous_sibling() 来浏览 HTML 或 XML 树结构。这些技术使我们能够自动执行繁琐的程序并有效地检索我们想要的数据。


相关文章