Beautiful Soup - find_previous_sibling() 方法



方法描述

Beautiful Soup 中的 find_previous_sibling() 方法返回與此 PageElement 最接近的、符合給定條件且出現在文件前面 的同級元素。

語法

find_previous_sibling(name, attrs, string, **kwargs)

引數

  • name − 標籤名稱過濾器。

  • attrs − 屬性值過濾器字典。

  • string − 具有特定文字的 NavigableString 過濾器。

  • kwargs − 屬性值過濾器字典。

返回值

find_previous_sibling() 方法返回一個 PageElement,它可以是 Tag 或 NavigableString。

示例 1

從以下示例中使用的 HTML 字串中,我們找出 <i> 標籤之前的同級元素,其標籤名稱為 'u'

from bs4 import BeautifulSoup

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

輸出

<u>Excellent</u>

示例 2

該網頁 (index.html) 包含一個 HTML 表單,其中包含三個輸入元素。我們找到一個 id 屬性為 marks 的元素,然後找到其之前具有 id 屬性為 nm 的同級元素。

from bs4 import BeautifulSoup

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

tag = soup.find('input', {'id':'marks'})
sib = tag.find_previous_sibling(id='nm')
print (sib)

輸出

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

示例 3

在下面的程式碼中,HTML 字串有兩個 <p> 元素和一個在外層 <p> 標籤內的字串。我們使用 find_previous_sibling() 方法搜尋 <p>Tutorial</p> 標籤的 NavigableString 物件同級元素。

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

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

tag = soup.find('p', string='Tutorial')
ptag = tag.find_previous_sibling(string='Excellent')
print (ptag, type(ptag))

輸出

Excellent <class 'bs4.element.NavigableString'>
廣告