一、方法描述
在同一缩进级别出现的 HTML 标签称为兄弟标签。PageElement 的 previous_sibling
属性返回当前标签前一个同级的标签,或者说是处于相同父元素下的前一个标签。此属性封装了 find_previous_sibling()
方法。
二、语法
element.previous_sibling
三、返回类型
previous_sibling
属性返回一个 PageElement,可以是 Tag 或者 NavigableString 对象。
四、示例
示例 1
在下面的代码中,HTML 字符串包含在一个 <p>
标签内的两个相邻标签。它展示了 <b>
标签前面的兄弟标签。
from bs4 import BeautifulSoup
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>