Beautiful Soup - previous_element 属性



方法描述

在Beautiful Soup库中,previous_element属性返回紧接在当前PageElement之前的Tag或NavigableString,即使它在父树之外也是如此。还有一个previous属性具有类似的行为。

语法

Element.previous_element

返回值

previous_element和previous属性返回紧接在当前标签之前的标签或NavigableString。

示例1

在从给定HTML字符串解析的文档树中,我们找到<p id='id1'>标签的previous_element。

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

soup = BeautifulSoup(html, 'lxml')
tag = soup.find('p', id='id1')
print (tag)
pre = tag.previous_element
print ("Previous:",pre)

pre = tag.previous_element.previous_element
print ("Previous:",pre)

输出

<p id="id1">Tutorial</p>
Previous: Python
Previous: <p>Python</p>

输出有点奇怪,因为显示的previous_element是'Python',这是因为内部字符串被注册为previous_element。为了获得预期的结果(<p>Python</p>)作为previous_element,请获取内部NavigableString对象的previous_element属性。

示例2

BeautifulSoup PageElements也支持previous属性,它类似于previous_element属性。

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

soup = BeautifulSoup(html, 'lxml')
tag = soup.find('p', id='id1')
print (tag)
pre = tag.previous
print ("Previous:",pre)

pre = tag.previous.previous
print ("Previous:",pre)

输出

<p id="id1">Tutorial</p>
Previous: Python
Previous: <p>Python</p>

示例3

在下一个示例中,我们尝试确定id属性为'age'的<input>标签旁边的元素。

from bs4 import BeautifulSoup

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

tag = soup.find('input', id='age')
pre = tag.previous_element.previous
print ("Previous:",pre)

输出

Previous: <input id="nm" name="name" type="text"/>
广告
© . All rights reserved.