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.