# 股吧数据爬取与情感分析系统 基于东方财富网股吧数据的爬虫系统,支持数据爬取、情感分析和关键词挖掘。 ## 功能特性 - 🕷️ **股吧数据爬取** - 自动爬取指定股票的股吧帖子 - 😊 **情感分析** - 基于大连理工大学情感词汇本体进行情绪计算 - 🔍 **关键词挖掘** - 使用TF-IDF算法提取热门话题 - 📊 **可视化输出** - 生成词云、情绪分布图等可视化图表 ## 项目结构 ``` guba2vec/ ├── spider.py # 股吧数据爬虫 ├── sentiment_analysis.py # 情感分析模块 ├── analyze.py # TF-IDF关键词分析 ├── requirements.txt # 依赖列表 ├── 大连理工大学中文情感词汇本体.xlsx # 情感词典 └── data/ # 爬取数据存储目录 └── guba_*.json/xlsx ``` ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 1. 爬取股吧数据 ```bash python spider.py ``` 默认爬取以下游戏行业股票: - 完美世界 (002624) - 三七互娱 (002555) - 巨人网络 (002558) - 世纪华通 (002602) - 昆仑万维 (300418) - 游族网络 (002174) - 掌趣科技 (300315) - 吉比特 (603444) 爬取结果保存在 `data/` 目录下,包含 JSON 和 Excel 两种格式。 ### 2. 情感分析 ```bash python sentiment_analysis.py ``` 基于大连理工大学中文情感词汇本体进行情绪分析,支持7种情绪类型: - 正面情绪:快乐、好评、惊讶 - 负面情绪:愤怒、悲伤、恐惧、厌恶 分析结果保存在 `sentiment_output/` 目录,包含: - 各股票详细情感数据(CSV) - 情绪统计汇总(CSV) - 可视化图表(PNG) ### 3. 关键词分析 ```bash python analyze.py ``` 使用TF-IDF算法提取关键词并生成词云,结果保存在 `output/` 目录。 ## 核心模块说明 ### spider.py 主要函数: - `fetch_guba_data(code, page, page_size, sort_type)` - 爬取单页数据 - `fetch_stock_posts(code, name, pages, page_size)` - 爬取多页数据 - `save_to_json(data, name, filename)` - 保存为JSON格式 - `save_to_excel(data, name, filename)` - 保存为Excel格式 ### sentiment_analysis.py 主要函数: - `build_sentiment_dictionary()` - 构建情感词典 - `emotion_caculate(text, sentiment_dict)` - 计算文本情绪 - `load_and_analyze_data(data_dir, output_dir)` - 批量分析数据 - `generate_visualizations()` - 生成可视化图表 ### analyze.py 主要函数: - `clean_text(text)` - 文本清洗 - `tokenize(text)` - 中文分词 - `calculate_tfidf(texts)` - 计算TF-IDF - `get_top_keywords()` - 获取Top关键词 - `generate_wordcloud()` - 生成词云 ## 情感词典 使用 **大连理工大学中文情感词汇本体**(需自行准备),包含: - 27469个情感词汇 - 7种情感分类 - 3种强度等级 - 2种极性(正面/负面) 备用方案:内置简化版情感词典,包含约200个常用情感词。 ## 数据格式 ### 爬取数据 (JSON) ```json { "stock_code": "002624", "stock_name": "完美世界", "total_pages": 10, "total_posts": 200, "crawl_time": "2024-01-01T12:00:00", "posts": [ { "post_id": "123456", "post_title": "标题", "post_content": "内容", "post_user": {"user_nickname": "用户名"}, "post_publish_time": "2024-01-01 10:00", "post_click_count": 100, "post_comment_count": 10, "post_like_count": 5 } ] } ``` ### 情感分析结果 (CSV) | 帖子ID | 标题 | 内容 | positive | negative | sentiment_score | |--------|------|------|----------|----------|-----------------| | 123456 | ... | ... | 5 | 2 | 3 | ## 注意事项 1. 爬虫使用模拟移动端请求,请合理控制爬取频率 2. 情感词典文件需放置在项目根目录 3. 首次运行可能需要下载jieba分词字典 4. 生成词云需要系统安装中文字体(默认使用SimHei) ## 依赖列表 | 库 | 版本 | 用途 | |----|------|------| | requests | >=2.28.0 | HTTP请求 | | pandas | >=2.0.0 | 数据处理 | | openpyxl | >=3.1.0 | Excel读写 | | jieba | >=0.42.1 | 中文分词 | | scikit-learn | >=1.3.0 | TF-IDF计算 | | numpy | >=1.24.0 | 数值计算 | | matplotlib | >=3.7.0 | 可视化 | | wordcloud | >=1.9.0 | 词云生成 | ## License MIT License