转载自L&H SitePython专区

最近有需要按层级解析如下格式的内容:

    • A
      • A.1
      • A.2

    • B
      • B.1
      • B.2

    • C
      • C.1
        • C.1.2

      • C.2

做了下搜索,有人建议是使用BeautifulSoup库,但是并没有显示出层级关系。这里写了简单示例,采用嵌套函数解决上述问题。直接看代码:

  1. #导入Beautiful库,如果没有安装就使用pip install bs4安装吧

  2. from bs4 importBeautifulSoup

  3. myxml = """

    • A
      • A.1
      • A.2

    • B
      • B.1
      • B.2

    • C
      • C.1
        • C.1.2

      • C.2

  4. """

  5. #ulSoup要解析的ULlevel为列表层级

  6. def findSoup(ul, level):

  7. print("level:"+str(level))

  8. for i in ul.contents:

  9. if'\n' != i:

  10. #如果找不到li表示,这个层级已经没有下一层级了,如果有的话,嵌套该函数继续查找

  11. ifNone!=i.find('li'):

  12. findSoup(i, level+1)

  13. else:

  14. print(str(i.get_text()))

  15. #打印soup变量看看,调用BeautifulSoup后会给加上标签

  16. soup = BeautifulSoup(myxml,'lxml')

  17. #soup.ul,也可以用soup.find('ul')

  18. findSoup(soup.ul, 0)

以上执行结果如下:

  1. level:0

  2. A

  3. level:1

  4. A.1

  5. A.2

  6. B

  7. level:1

  8. B.1

  9. B.2

  10. C

  11. level:1

  12. C.1

  13. level:2

  14. C.1.2

  15. C.2

可以看出列表的层级已经分析出来了。以上仅为提供一个思路,如果要做进一步分析,可自行修改。