Beautiful Soup - previous_siblings 属性



方法描述

位于相同缩进级别的 HTML 标签称为兄弟标签。Beautiful Soup 中的 previous_siblings 属性返回一个生成器对象,用于迭代当前标签之前的所有标签和字符串(在相同的父元素下)。这与 find_previous_siblings() 方法的输出类似。

语法

element.previous_siblings

返回类型

previous_siblings 属性返回一个包含兄弟 PageElements 的生成器。

示例 1

下面的示例解析给定的 HTML 字符串,该字符串在外部 <p> 标签内嵌套了一些标签。使用 previous_siblings 属性获取 <u> 标签之前的兄弟标签。

from bs4 import BeautifulSoup
soup = BeautifulSoup("<p><b>Excellent</b><i>Python</i><u>Tutorial</u></p>", 'html.parser')

tag1 = soup.u
print ("previous siblings:")
for tag in tag1.previous_siblings:
   print (tag)

输出

previous siblings:
<i>Python</i>
<b>Excellent</b>

示例 2

在以下示例中使用的 index.html 文件中,HTML 表单中有三个输入元素。我们找出在 <form> 标签下,id 设置为 marks 的元素之前的兄弟标签是什么。

from bs4 import BeautifulSoup

fp = open("index.html")
soup = BeautifulSoup(fp, 'html.parser')

tag = soup.find('input', {'id':'marks'})
sibs = tag.previous_siblings
print ("previous siblings:")
for sib in sibs:
   print (sib)

输出

previous siblings:

<input id="age" name="age" type="text"/>

<input id="nm" name="name" type="text"/>

示例 3

顶级 <html> 标签总是有两个兄弟标签 - head 和 body。因此,<body> 标签只有一个之前的兄弟标签,即 head,如下代码所示:

html = '''
<html>
   <head>
      <title>Hello</title>
   </head>
   <body>
      <p>Excellent</p><p>Python</p><p>Tutorial</p>
   </body>
   </head>
'''
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

tags = soup.body.previous_siblings
print ("previous siblings:")
for tag in tags:
   print (tag)

输出

previous siblings:

<head>
<title>Hello</title>
</head>
广告
© . All rights reserved.