一、方法描述
在 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