Beautiful Soup 简明教程

Beautiful Soup - parents Property

Method Description

BeautifulSoup 库中的 parents 属性以递归方式检索所述 PegeElement 的所有父元素。parents 属性返回的值的类型是一个生成器,借助该生成器,我们可以列出从下到上的父元素。

Syntax

Element.parents

Return value

parents 属性返回一个生成器对象。

Example 1

此示例使用 .parents 从深入埋藏在文档中的 <a> 标记跳转到文档的最顶端。在下面的代码中,我们将跟踪示例 HTML 字符串中第一个 <p> 标记的父标记。

html = """
<html><head><title>TutorialsPoint</title></head>
<body>
<p>Hello World</p>
"""
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
tag = soup.p
for element in tag.parents:
   print (element.name)

Output

body
html
[document]

请注意 BeautifulSoup 对象的父节点是 [document]。

Example 2

在下面的示例中,我们可以看到 <b> 标记被包含在 <p> 标记里面。它上方的两个 div 标记有一个 id 属性。我们尝试只打印那些具有 id 属性的元素。has_attr() 方法用于此目的。

html = """
<div id="outer">
<div id="inner">
<p>Hello<b>World</b></p>
</div>
</div>
"""
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
tag = soup.b
for parent in tag.parents:
   if parent.has_attr("id"):
      print(parent["id"])

Output

inner
outer