Beautiful Soup 简明教程
Beautiful Soup - previous_element Property
Method Description
在 Beautiful Soup 库中,previous_element 属性返回紧接在当前 PageElement 之前的 Tag 或 NavigableString,即使它不在父级树中。还有 previous 属性,类似的行为
Example 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)
Output
<p id="id1">Tutorial</p>
Previous: Python
Previous: <p>Python</p>
输出有点奇怪,因为显示的 previous 元素是 Python,那是因为内部字符串被注册为 previous 元素。如要获取预期的结果(<p>Python</p>)作为 previous 元素,请获取内在 NavigableString 对象的 previous_element 特性。
Example 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)