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'>
广告
© . All rights reserved.