Beautiful Soup - next_element 属性



方法描述

在 Beautiful Soup 库中,next_element 属性返回紧挨着当前 PageElement 的 Tag 或 NavigableString,即使它在父树之外。还有一个 next 属性具有类似的行为。

语法

Element.next_element

返回值

next_element 和 next 属性返回紧挨着当前标签的标签或 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>TutorialsPoint</h1>
广告

© . All rights reserved.