📜  Python BeautifulSoup 侧向导航树

📅  最后修改于: 2022-05-13 01:55:13.800000             🧑  作者: Mango

Python BeautifulSoup 侧向导航树

在本文中,我们将看到如何横向导航beautifulsoup 解析树。横向导航意味着标签在同一级别。请参阅下面的示例以获得更好的主意。

在上面的例子中,标签 处于同一级别。

所需模块的安装:

bs4:我们需要在我们的机器中手动安装 BeautifulSoup 库,因为Python语言配置中默认不提供它。因此,让我们通过在我们的系统中运行以下命令来安装它:

pip install bs4

lxml: lxml 是 Pythonic libxml2 和 libxlst 库之间的成熟绑定,借助 ElementTree API,它提供了对这些库的安全便捷的访问。



pip install lxml 

让我们通过实现来理解:

Prettify(): BeautifulSoup 中的 Prettify()函数使我们能够观察标签的嵌套在文档中是如何完成的。

例子 :

Python3
import bs4
  
  
sibling_soup = bs4.BeautifulSoup("Welcome to Geekforgeeks\
Hello geeks", 'html.parser')
print(sibling_soup.prettify())


Python3
# For importing BeautifulSoup
import bs4
  
  
# initiating variable of BeautifulSoup
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional HandBook Guide", 'lxml')  
  
# To print contents in the initiated BeautifulSoup
print(sibling_of_soup.prettify())


Python3
import bs4
  
  
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional HandBook Guide",'lxml')
  
# printing contents in BeautifulSoup Variable
print(sibling_of_soup.b.next_sibling)


Python3
import bs4
  
  
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional HandBook Guide",'lxml')
  
# Implementing Navigation on sibling
print(sibling_of_soup.c.next_sibling)


Python3


输出:

横向导航

我们可以通过.next_sibling和Python中BeautifulSoup的.previous_sibling导航横盘文档中,在Python这两个功能为我们提供导航是在树的同级别标记之间。

让我们通过一个经过验证的例子更好地了解这个概念:



考虑一个示例文档:

蟒蛇3

# For importing BeautifulSoup
import bs4
  
  
# initiating variable of BeautifulSoup
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional HandBook Guide", 'lxml')  
  
# To print contents in the initiated BeautifulSoup
print(sibling_of_soup.prettify())

输出:

在上面的代码中,我们可以清楚地注意到 标签处于同一级别,并且它们都是同一个标签的子级,因此我们可以将它们归类为兄弟级。

现在,我们可以使用以下命令在兄弟 标签之间导航,因为它们都是兄弟:

  • .next_sibling()
  • .previous_sibling:

1. 使用 .next_sibling 导航:

蟒蛇3

import bs4
  
  
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional HandBook Guide",'lxml')
  
# printing contents in BeautifulSoup Variable
print(sibling_of_soup.b.next_sibling)

输出:



在上面的代码中,给了我们以下输出,即 c 标签中的项目作为 b 标签的下一个兄弟是 c 因此,c 标签中的项目将被导航和打印。

如果我们为 c 标签编写一个打印语句,例如:

蟒蛇3

import bs4
  
  
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional HandBook Guide",'lxml')
  
# Implementing Navigation on sibling
print(sibling_of_soup.c.next_sibling)

输出:

在上面的代码中,生成的输出是“无”,因为在 c 之后没有标签存在。

2. 使用 .previous_sibling 导航:

输出:

在代码中,c 标签上的 .previous_sibling,它在 b 标签中生成一个项目,因为它的前一个兄弟标签是 b,但是如果我们将 .previous_sibling 实现到 b 标签,它会生成输出“None”,因为没有兄弟发生在 b 标签之前。