You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# -*- 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 ( )