from spider import BilibiliSpider # 爬虫模块,获取弹幕数据 from analyzer import DanmukuAnalyzer # 弹幕分析模块,处理和分析弹幕数据 from basic_visualizer import BasicVisualizer # 基础可视化模块,生成统计表格和基础图表 from wordcloud_visualizer import WordCloudVisualizer # 词云模块,生成弹幕词云 from view_visualizer import ViewDistributionVisualizer # 观点分布模块,展示不同观点的分布情况 def main(): spider = BilibiliSpider(total_videos=300)#设置爬取的视频总数为300个 danmukus = spider.crawl_danmukus(keywords=["大语言模型"])# 爬取"大语言模型"关键词的视频的弹幕数据 if not danmukus: print("无弹幕数据,终止程序") return#没有获得弹幕就停下来 # 2. 分析数据:对爬取的弹幕进行处理和分析 analyzer = DanmukuAnalyzer(danmukus) ai_counter = analyzer.get_ai_related() view_counts = analyzer.classify_views(ai_counter) # 3. 基础统计可视化:生成基础统计结果并可视化 BasicVisualizer.save_to_excel(ai_counter) BasicVisualizer.plot_top8(ai_counter) # 4. 词云可视化(增强过滤):生成弹幕词云并保存 wc_visualizer = WordCloudVisualizer() wc_visualizer.generate( danmukus, stopwords=analyzer.stopwords, # 使用分析器中的停用词表过滤无意义词汇 min_length=4, # 过滤长度小于2的词 min_freq=5, # 过滤出现次数小于3的词 filename="弹幕词云.png" # 词云图片保存路径 ) # 5. 观点分布可视化:展示不同观点的分布情况) ViewDistributionVisualizer.plot(view_counts) ViewDistributionVisualizer.print_stats(view_counts) # 6. 打印前8弹幕文字结果:在控制台输出排名前8的AI相关弹幕 print("\n===== AI相关弹幕Top8 =====") # 遍历出现次数最多的前8条弹幕,按格式输出 for i, (text, count) in enumerate(ai_counter.most_common(8), 1): print(f"{i}. {text}: {count}次") if __name__ == "__main__": main()