#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 生成单文件HTML可视化页面 """ import json import os def generate_single_html(): """生成包含所有资源的单文件HTML""" # 读取各个文件 with open('index.html', 'r', encoding='utf-8') as f: html_content = f.read() with open('css/style.css', 'r', encoding='utf-8') as f: css_content = f.read() with open('js/carousel.js', 'r', encoding='utf-8') as f: carousel_js = f.read() with open('js/card.js', 'r', encoding='utf-8') as f: card_js = f.read() with open('js/tree.js', 'r', encoding='utf-8') as f: tree_js = f.read() with open('js/main.js', 'r', encoding='utf-8') as f: main_js = f.read() with open('data/data.json', 'r', encoding='utf-8') as f: data = json.load(f) # 修改main.js中的数据加载逻辑 main_js_modified = main_js.replace( 'const response = await fetch(\'data/data.json\');', '// 使用内联数据' ).replace( '''if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } this.data = await response.json();''', 'this.data = window.__INLINE_DATA__;' ) # 构建完整的HTML(使用与index.html完全一致的结构) single_html = f''' 小红书搜索结果可视化

🔍 小红书搜索结果可视化

结果项: 0 特征数: 0 帖子数: 0

搜索结果详情

📋

请从左侧选择一个特征查看搜索结果

''' # 写入文件 - 使用新文件名不覆盖原有文件 import datetime timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') output_file = f'xiaohongshu_visualization_{timestamp}.html' with open(output_file, 'w', encoding='utf-8') as f: f.write(single_html) # 获取文件大小 file_size = os.path.getsize(output_file) / (1024 * 1024) print(f"✅ 已生成单文件HTML: {output_file}") print(f"📦 文件大小: {file_size:.1f} MB") print(f"🚀 可以直接拖拽到浏览器打开") return output_file if __name__ == '__main__': generate_single_html()