高效解析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速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号