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

全部评论 (0)
还没有任何评论哟~
