一、方法描述
在 BeautifulSoup 库中,next_element 属性返回紧跟在当前 PageElement 之后的 Tag 或 NavigableString,即使它不在同一个父节点下。还有一个类似的 next 属性。
二、语法
Element.next_element
三、返回值
next_element 和 next 属性返回紧跟在当前标签之后的 Tag 或 NavigableString。
四、示例
示例 1
在从给定的 HTML 字符串解析出的文档树中,我们查找 <b> 标签的 next_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.b
print(tag)
nxt = tag.next_element
print("Next:", nxt)
nxt = tag.next_element.next_element
print("Next:", nxt)
输出:
<b>Excellent</b>
Next: Excellent
Next: <p>Python</p>
输出看起来有点奇怪,因为 <b>Excellent</b> 的下一个元素被显示为 'Excellent',这是因为内部的字符串被注册为下一个元素。为了得到期望的结果(下一个元素为 <p>Python</p>),需要获取内部 NavigableString 对象的 next_element 属性。
示例 2
BeautifulSoup 的 PageElements 还支持 next 属性,它类似于 next_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.b
print(tag)
nxt = tag.next
print("Next:", nxt)
nxt = tag.next.next
print("Next:", nxt)
输出:
<b>Excellent</b>
Next: Excellent
Next: <p>Python</p>
示例 3
在下一个例子中,我们尝试确定紧跟在 <body> 标签后的元素。因为它后面跟着一个换行符(\n),我们需要找到紧跟在 <body> 标签后的元素的下一个元素。结果是 <h1> 标签。
from bs4 import BeautifulSoup
fp = open("index.html")
soup = BeautifulSoup(fp, 'html.parser')
tag = soup.find('body')
nxt = tag.next_element.next
print("Next:", nxt)
输出:
Next: <h1>Yoagoa</h1>