Advertisement

python从多个目录的网页中获取json数据并提取处理

阅读量:
复制代码
    from bs4 import BeautifulSoup
    import re
    import json
    
    # 假设json_data是包含上述JSON数据的字符串
    # json_data = '[{"bsUuid":"7871c49f0bc34e9f8ea875420713fa11",...,"uuids":""}]'
    # 创建一个空列表来存储提取的信息
    extracted_info = []
    
    def decode_json_data(json_data):
    # 解析JSON数据
    data = json.loads(json_data)
    
    # 遍历数据
    for item in data:
        print("资源名称:", item["soName"])
        print("资源UUID:", item["soUuid"])
        print("资源类型:", item["props"]["TYPE_NAME"])
        print("资源组:", item["props"]["GROUP_NAME"])
        # ... 根据需要打印或处理其他属性
        print("-" * 40)  # 打印分隔线以便区分不同的资源
        # 创建一个字典来存储提取的信息
        extracted_data = {
            "soName": item["soName"],
            "soUuid": item["soUuid"],
            "TYPE_NAME": item["props"]["TYPE_NAME"],
            "percent": item["props"]["CENT"],
            "GROUP_NAME": item["props"]["GROUP_NAME"]
        }
    
        # 将提取的信息添加到列表中
        extracted_info.append(extracted_data)
    
    def onehtml(filename):
    # 读取HTML文件内容
    with open(filename, 'r', encoding='utf-8') as file:
        html_content = file.read()
    
    # 使用BeautifulSoup解析HTML
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 假设JavaScript中的变量定义类似于:
    # var solist = [...];
    
    # 寻找JavaScript代码中的solist变量定义
    pattern = re.compile(r"var\s+soList\s*=\s*(\[.*?\]);", re.DOTALL)
    match = pattern.search(str(soup))
    
    if match:
        # 执行匹配到的JavaScript代码以获取solist的值
        print(match.group(1))
        decode_json_data(match.group(1))
        # solist_value = eval(match.group(1))  # 注意:eval()可能带来安全风险
        # print(solist_value)
    else:
        print(filename, "未找到solist变量定义")
    
    
    import os
    
    def find_files(directory, pattern):
    """
    在指定目录及其子目录下查找匹配特定模式的文件。
    
    :param directory: 要搜索的根目录。
    :param pattern: 要搜索的文件名模式。
    :return: 匹配的文件路径列表。
    """
    matches = []
    # os.walk()遍历目录
    for root, dirs, files in os.walk(directory):
        for filename in files:
            if pattern in filename:
                matches.append(os.path.join(root, filename))
    return matches
    
    # 要搜索的目录
    search_directory = '.'
    # 文件名匹配模式
    file_pattern = '任务整体报表.html'
    
    # 查找文件
    found_files = find_files(search_directory, file_pattern)
    
    # 打印结果
    for file_path in found_files:
    print(file_path)
    onehtml(file_path)
    
    # 打印提取的信息
    for info in extracted_info:
    print(info)    
    
    # 使用sorted()函数按percent键降序排序
    sorted_data_desc = sorted(extracted_info, key=lambda x: x['percent'], reverse=True)
    
    # 打印降序排序后的结果
    print("降序排序(百分比最高到最低):")
    for item in sorted_data_desc:
    print(item)    
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/iwDoe14R3dWTtYgSvZQrfFCqPzk0.png)

全部评论 (0)

还没有任何评论哟~