如何用Python递归遍历HTML层级结构并提取文件名?

霞舞
发布: 2025-02-20 17:14:21
原创
632人浏览过

如何用python递归遍历html层级结构并提取文件名?

高效解析HTML层级结构并提取文件名

HTML文档内容常常嵌套复杂,使用传统字符串处理方法效率低下。本文介绍如何利用Python的递归函数,轻松遍历HTML结构并提取所需文件名。

HTML解析

首先,我们需要使用合适的库将HTML片段解析成可遍历的数据结构。Beautiful Soup 4库是一个理想的选择:

立即学习Python免费学习笔记(深入)”;

from bs4 import BeautifulSoup

html_content = """

<li>favicon.ico</li>

<li class="expandable">
    <div class="hitarea expandable-hitarea"></div>
    banner-ads
    <ul style="display: block;">
        <li>ad01.png</li>
        <li>ad02.png</li>
        <li>ad03.png</li>
        <li>ad04.png</li>
        <li>ad06.jpg</li>
    </ul>
</li>  
"""

soup = BeautifulSoup(html_content, "html.parser")
登录后复制

递归遍历函数

解析完成后,我们使用递归函数深度优先遍历HTML树:

def extract_filenames(element, current_path=""):
    if element.name == "li":
        filename = element.text.strip()
        yield f"{current_path}{filename}" if current_path else filename
    elif element.name and element.name != 'code': #忽略code标签
        new_path = f"{current_path}{element.text.strip()}/" if element.text.strip() else current_path
        for child in element.children:
            yield from extract_filenames(child, new_path)
登录后复制

结果生成与输出

最后,我们调用递归函数,收集所有提取的文件名:

file_paths = list(extract_filenames(soup))
print(file_paths)
#输出:['favicon.ico', 'banner-ads/ad01.png', 'banner-ads/ad02.png', 'banner-ads/ad03.png', 'banner-ads/ad04.png', 'banner-ads/ad06.jpg']
登录后复制

通过以上步骤,我们成功地利用Python递归函数遍历HTML结构,并提取所有所需的文件名,提高了代码效率和可读性。 代码中增加了对code标签的忽略处理,避免了不必要的路径生成。

以上就是如何用Python递归遍历HTML层级结构并提取文件名?的详细内容,更多请关注php中文网其它相关文章!

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号