# -*- coding: utf-8 -*- import os # 新增:导入os模块 from crawler import BilibiliDanmakuCrawler from statistic import DanmakuStatistic from visualization import DanmakuVisualizer from analysis import DanmakuAnalyzer # 新增:添加分析模块 def main(): # 配置参数 keyword = "大语言模型" video_count = 300 data_dir = "./data" # 新增:确保数据目录存在(关键修复) try: os.makedirs(data_dir, exist_ok=True) print(f"数据目录已准备就绪:{data_dir}") except PermissionError: print(f"错误:没有权限创建目录 {data_dir},请检查路径权限") return except Exception as e: print(f"创建目录失败:{e}") return # 1. 爬取弹幕 print(f"===== 开始爬取「{keyword}」相关视频弹幕 =====") crawler = BilibiliDanmakuCrawler( keyword=keyword, video_count=video_count, save_dir=data_dir ) crawler.run() # 检查弹幕文件是否存在 danmu_file = f"{data_dir}/all_danmu.txt" if not os.path.exists(danmu_file) or os.path.getsize(danmu_file) == 0: print("错误:弹幕文件不存在或为空,无法继续统计") return # 2. 统计高频词 print("\n===== 开始统计弹幕高频词 =====") stat_file = f"{data_dir}/statistic.xlsx" try: stat = DanmakuStatistic( danmu_path=danmu_file, excel_path=stat_file ) stat.export_to_excel() # 检查统计文件是否生成成功 if not os.path.exists(stat_file) or os.path.getsize(stat_file) == 0: print("警告:统计文件生成失败,将跳过可视化步骤") return except PermissionError: print(f"错误:没有权限写入统计文件 {stat_file},请关闭可能占用该文件的程序") return except Exception as e: print(f"统计过程出错:{e}") return # 3. 生成可视化结果 print("\n===== 开始生成可视化结果 =====") try: viz = DanmakuVisualizer( danmu_path=danmu_file, excel_path=stat_file ) viz.generate_wordcloud() viz.plot_top8_bar() except Exception as e: print(f"可视化过程出错:{e}") # 4. 新增:观点分析 print("\n===== 开始进行用户观点分析 =====") analyzer = DanmakuAnalyzer(danmu_path=danmu_file) analyzer.analyze() if __name__ == "__main__": main()