完成股吧数据分析项目:

1. 修复词云断句问题 - 添加英文单词过滤
2. 创建 Word2Vec + CNN 情绪感知模型
3. 创建情绪时间序列分析脚本(基于大连理工大学情感词典)
4. 添加停用词文件(1427个中英文停用词)
5. 更新 analyze.py 保存时间字段 post_publish_time
6. 更新 requirements.txt 添加必要依赖
This commit is contained in:
2026-05-28 15:30:16 +08:00
parent 5231e995dd
commit 0098977172
7 changed files with 2165 additions and 19 deletions
+163
View File
@@ -0,0 +1,163 @@
# 股吧数据爬取与情感分析系统
基于东方财富网股吧数据的爬虫系统,支持数据爬取、情感分析和关键词挖掘。
## 功能特性
- 🕷️ **股吧数据爬取** - 自动爬取指定股票的股吧帖子
- 😊 **情感分析** - 基于大连理工大学情感词汇本体进行情绪计算
- 🔍 **关键词挖掘** - 使用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