Files
guba2vec/README.md
T
zzy5111398 0098977172 完成股吧数据分析项目:
1. 修复词云断句问题 - 添加英文单词过滤
2. 创建 Word2Vec + CNN 情绪感知模型
3. 创建情绪时间序列分析脚本(基于大连理工大学情感词典)
4. 添加停用词文件(1427个中英文停用词)
5. 更新 analyze.py 保存时间字段 post_publish_time
6. 更新 requirements.txt 添加必要依赖
2026-05-28 15:30:16 +08:00

163 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 股吧数据爬取与情感分析系统
基于东方财富网股吧数据的爬虫系统,支持数据爬取、情感分析和关键词挖掘。
## 功能特性
- 🕷️ **股吧数据爬取** - 自动爬取指定股票的股吧帖子
- 😊 **情感分析** - 基于大连理工大学情感词汇本体进行情绪计算
- 🔍 **关键词挖掘** - 使用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