zoukankan      html  css  js  c++  java
  • 标签树的三种遍历

    一、标签树的下行遍历

    属性 说明
    .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)#循环遍历前续节点
  • 相关阅读:
    Lua 虚拟机指令
    如何打包和部署air应用程序
    demjson
    mongo批量插入问题(insert_many,bulk_write),spark df转json传入mongo
    python isinstance()方法的使用
    python 时间对应计算
    第三方库-正则re
    第三方库-时间函数dateutil
    Mongodb操作-更新操作符
    python文件操作-1.将PDF转成Excel
  • 原文地址:https://www.cnblogs.com/BASE64/p/10288475.html
Copyright © 2011-2022 走看看