Python BeautifulSoup 侧向导航树
在本文中,我们将看到如何横向导航beautifulsoup 解析树。横向导航意味着标签在同一级别。请参阅下面的示例以获得更好的主意。
在上面的例子中,标签 和
所需模块的安装:
bs4:我们需要在我们的机器中手动安装 BeautifulSoup 库,因为Python语言配置中默认不提供它。因此,让我们通过在我们的系统中运行以下命令来安装它:
pip install bs4
lxml: lxml 是 Pythonic libxml2 和 libxlst 库之间的成熟绑定,借助 ElementTree API,它提供了对这些库的安全便捷的访问。
pip install lxml
让我们通过实现来理解:
Prettify(): BeautifulSoup 中的 Prettify()函数使我们能够观察标签的嵌套在文档中是如何完成的。
Syntax: (BeautifulSoup Variable).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
import bs4
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional
print(sibling_of_soup.c.previous_sibling)
print(sibling_of_soup.b.previous_sibling)
输出:
横向导航
我们可以通过.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 导航:
蟒蛇3
import bs4
sibling_of_soup = bs4.BeautifulSoup("CPPSecrets\
C++ Python Professional
print(sibling_of_soup.c.previous_sibling)
print(sibling_of_soup.b.previous_sibling)
输出:
在代码中,c 标签上的 .previous_sibling,它在 b 标签中生成一个项目,因为它的前一个兄弟标签是 b,但是如果我们将 .previous_sibling 实现到 b 标签,它会生成输出“None”,因为没有兄弟发生在 b 标签之前。