版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
HTML文本是一种树形结构,所以bs4的内容遍历方法也是基于树形结构的它共有下行遍历、上行遍历和平行遍历这三种遍历方法。
子节点的列表将<tag>所有子节点存入列表 |
子节点的迭代类型,与.contents类似用于循环遍历子节点 |
子孙节點的迭代类型,包含所有子孙节点用于循环遍历 |
我们仍以上一节中的网页为例用bs4对其进行处理
我们对其中的某些节点的子节点进行遍历
鈳以看到,子节点不仅包含各个标签还包含了诸如'/n'这种类型的字符串,又因为".children"与".descendants"返回的是迭代类型所以可以用"for"循环来对其进行遍历
节點先辈标签的迭代类型,用于循环遍历先辈节点 |
其中.parents不仅能遍历父节点它能一直向上遍历到soup节点本身,而soup的先辈节点为None,所以在循环遍历時需要把soup这一特殊情况考虑进来防止程序出现异常。
返回按照HTML文本顺序的下一个平行节点标签 |
返回按照HTML文本顺序的上一个平行节点标签 |
迭代类型返回按照HTML文本顺序的后续所有平行节点标签 |
迭代类型,返回按照HTML文本顺序的前续所有平行节点标签 |
平行遍历只发生在同一个父節点之下的各节点间而不会遍历到其他父节点之下,遍历时若返回空值则说明已该节点不存在上一个或下一个平行节点了另外还需注意,标签树中的NavigableString类型也被作为了标签树的节点所以再在对平行节点进行遍历时,可能会遍历到各标签之间的NavigableString如:
而如何对NavigableString与标签之间進行区分,我们将在后续的实际应用中进行详解