Beautiful Soup - parent 属性



方法描述

在 BeautifulSoup 库中,parent 属性返回所述 PageElement 的直接父元素。parent 属性返回的值的类型是 Tag 对象。对于 BeautifulSoup 对象,其父元素是文档对象。

语法

Element.parent

返回值

parent 属性返回一个 Tag 对象。对于 Soup 对象,它返回文档对象。

示例 1

此示例使用 .parent 属性查找示例 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
print (tag.parent.name)

输出

body

示例 2

在下面的示例中,我们看到 <title> 标签包含在 <head> 标签内。因此,<title> 标签的 parent 属性返回 <head> 标签。

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

soup = BeautifulSoup(html, 'html.parser')
tag = soup.title
print (tag.parent)

输出

<head><title>TutorialsPoint</title></head>

示例 3

Python 内置的 HTML 解析器的行为与 html5lib 和 lxml 解析器略有不同。内置解析器不会尝试根据提供的字符串构建完美的文档。如果字符串中不存在 body 或 html 等额外的父标签,它不会添加这些标签。另一方面,html5lib 和 lxml 解析器会添加这些标签,以使文档成为一个完美的 HTML 文档。

html = """
<p><b>Hello World</b></p>
"""
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
print (soup.p.parent.name)

soup = BeautifulSoup(html, 'html5lib')
print (soup.p.parent.name)

输出

[document]
Body

由于 HTML 解析器不会添加额外的标签,因此解析后的 soup 的父元素是文档对象。但是,当我们使用 html5lib 时,父标签的 name 属性为 Body。

广告

© . All rights reserved.