一、方法描述
在同一缩进级别出现的 HTML 标签称为兄弟标签。Beautiful Soup 中的 next_siblings
属性返回一个生成器对象,用于迭代同一父元素下的所有后续标签和字符串。
二、语法
element.next_siblings
三、返回类型
next_siblings
属性返回一个包含兄弟 PageElement 的生成器。
四、示例
示例 1
index.html
文件中的 HTML 表单代码包含三个输入元素。下面的脚本使用 next_siblings
属性收集具有 id
属性为 nm
的输入元素的后续兄弟元素。
from bs4 import BeautifulSoup
fp = open("index.html")
soup = BeautifulSoup(fp, 'html.parser')
tag = soup.find('input', {'id':'nm'})
siblings = tag.next_siblings
print(list(siblings))
输出:
['\n', <input id="age" name="age" type="text"/>, '\n', <input id="marks" name="marks" type="text"/>, '\n']
示例 2
让我们使用以下 HTML 片段来进行说明:
使用下面的代码来遍历后续兄弟标签。
from bs4 import BeautifulSoup
soup = BeautifulSoup("<p><b>Excellent</b><i>Python</i><u>Tutorial</u></p>", 'html.parser')
tag1 = soup.b
print("next siblings:")
for tag in tag1.next_siblings:
print(tag)
输出:
next siblings:
<i>Python</i>
<u>Tutorial</u>
示例 3
下一个示例显示了 <head>
标签只有一个后续兄弟元素,即 <body>
标签。
html = '''
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>Excellent</p><p>Python</p><p>Tutorial</p>
</body>
</html>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
tags = soup.head.next_siblings
print("next siblings:")
for tag in tags:
print(tag)
输出:
next siblings:
<body>
<p>Excellent</p><p>Python</p><p>Tutorial</p>
</body>
额外的行是因为生成器中的换行符导致的。