一、方法描述
在 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>