Beautiful Soup - previous_sibling 屬性



方法描述

位於相同縮排級別的 HTML 標籤稱為兄弟標籤。PageElement 的 previous_sibling 屬性返回相同級別或相同父級下之前出現的標籤(出現在當前標籤之前的標籤)。此屬性封裝了 find_previous_sibling() 方法。

語法

element.previous_sibling

返回型別

previous_sibling 屬性返回 PageElement、Tag 或 NavigableString 物件。

示例 1

在下面的程式碼中,HTML 字串包含在 <p> 標籤內兩個相鄰的標籤。它顯示了出現在其之前的 <b> 標籤的兄弟標籤。

from bs4 import BeautifulSoup

fp = open("index.html")
soup = BeautifulSoup("<p><b>Hello</b><i>Python</i></p>", 'html.parser')
tag = soup.i
sibling = tag.previous_sibling
print (sibling)

輸出

<b>Hello</b>

示例 2

我們使用 index.html 檔案進行解析。頁面包含一個 HTML 表單,其中包含三個輸入元素。哪個元素是 id 屬性為 age 的輸入元素之前的兄弟元素?以下程式碼顯示了它 -

from bs4 import BeautifulSoup

fp = open("index.html")
soup = BeautifulSoup(fp, 'html.parser')

tag = soup.find('input', {'id':'age'})
sib = tag.previous_sibling.previous_sibling
print (sib)

輸出

<input id="nm" name="name" type="text"/>

示例 3

首先我們找到包含字串“Tutorial”的 <p> 標籤,然後找到它之前的標籤。

html = '''
<p>Excellent</p><p>Python</p><p>Tutorial</p>
'''
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

tag = soup.find('p', string='Tutorial')
print (tag.previous_sibling)

輸出

<p>Python</p>
廣告