博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
标签树的三种遍历
阅读量:4449 次
发布时间:2019-06-07

本文共 1285 字,大约阅读时间需要 4 分钟。

一、标签树的下行遍历

属性 说明
.contents 子节点的列表,将<tag>所有儿子节点存入列表中(只能获取下一级儿子节点)
.children 子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants 子孙节点的迭代类型,包含所有子孙结点,用于循环遍历(可以获取所有子节点)

 

 

 

 

 

 

1 #这里使用前一篇文章的demo这锅汤2 print(soup.head)#打印head标签3 print(soup.body.contents)#打印body标签的下一级标签4 print(len(soup.body.contents))#打印body标签的下一级标签的个数
1 for child in soup.body.contents:2     print(child)#循环遍历儿子节点3 4 for child in soup.body.contents:5   print(child)#循环遍历子孙节点

 

 

二、标签树的上行遍历

属性 说明
.parent 节点的父亲标签
.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点

 

 

 

 

1 #依旧使用demo和soup这锅汤 2 #demo = r.text 3 #soup = BeautifulSoup(demo,"html.parser") 4  5 print(soup.title.paret)#打印title的父亲标签 6 print(soup.html.parent)#由于html标签是最高级的标签,它的父亲是它自己 7  8 #循环上行遍历标签树: 9 for parent in soup.a.parents:10     if parent is None:11         print(parent)12     else:13         print(parent.name)

 

 

三、标签树的平行遍历

属性 说明
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previos_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

 

 

 

 

 

 

 

 

注意:这个只能发生在父节点相同的标签遍历

1 print(soup.a.next_sibling)#平行节点的后一个兄弟标签2 print(soup.a.previous_sibling)#平行节点的前一个兄弟标签3 4 for sibling in soup.a.next_siblings:5     print(sibling)#循环遍历后续节点6 7 for sibling in soup.a.previous_siblings:8     print(sibling)#循环遍历前续节点

 

转载于:https://www.cnblogs.com/BASE64/p/10288475.html

你可能感兴趣的文章
JDK1.8之后匿名内部类访问方法中的局部变量不用加final修饰
查看>>
九度oj题目1521:二叉树的镜像
查看>>
java运行时内存分类
查看>>
为什么说 Git 比 SVN 更好
查看>>
图的应用:哈密尔顿路径
查看>>
js计算日期相减天数
查看>>
jquery 判断元素是否隐藏
查看>>
wcf契约版本处理与异常处理(随记)
查看>>
1.基础数据类型的初识 字符串 bool 整型 if else elif
查看>>
Mybatis源码分析: MapperMethod功能讲解(1)
查看>>
Error: Cannot retrieve repository metadata (repomd.xml) for repository: addons.
查看>>
jqGrid的subGrid子表格
查看>>
插件库
查看>>
桶排序
查看>>
the least common multiplier
查看>>
Metro 风格的浏览和无插件的 HTML5
查看>>
LifecycleControl.cs
查看>>
函数式思维: 利用 Either 和 Option 进行函数式错误处理 类型安全的函数式异常...
查看>>
ICEfaces 3.2.0.BETA1 发布
查看>>
div 旋转
查看>>