一、方法描述
在 BeautifulSoup 库中,parents 属性递归地检索指定 PageElement 的所有父元素。parents 属性返回的值的类型是一个生成器,利用它可以列出从下到上的所有父元素。
二、语法
Element.parents
三、返回值
parents 属性返回一个生成器对象。
四、示例
示例 1
此示例使用 .parents 从文档深处的一个 <a> 标签遍历到文档的顶部。在下面的代码中,我们追踪示例 HTML 字符串中第一个 <p> 标签的父元素。
html = """
<html><head><title>Yoagoa</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)
输出:
body
html
[document]
注意,BeautifulSoup 对象的父元素是 [document]。
示例 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"])
输出:
inner
outer