0098977172
1. 修复词云断句问题 - 添加英文单词过滤 2. 创建 Word2Vec + CNN 情绪感知模型 3. 创建情绪时间序列分析脚本(基于大连理工大学情感词典) 4. 添加停用词文件(1427个中英文停用词) 5. 更新 analyze.py 保存时间字段 post_publish_time 6. 更新 requirements.txt 添加必要依赖
4.3 KiB
4.3 KiB
股吧数据爬取与情感分析系统
基于东方财富网股吧数据的爬虫系统,支持数据爬取、情感分析和关键词挖掘。
功能特性
- 🕷️ 股吧数据爬取 - 自动爬取指定股票的股吧帖子
- 😊 情感分析 - 基于大连理工大学情感词汇本体进行情绪计算
- 🔍 关键词挖掘 - 使用TF-IDF算法提取热门话题
- 📊 可视化输出 - 生成词云、情绪分布图等可视化图表
项目结构
guba2vec/
├── spider.py # 股吧数据爬虫
├── sentiment_analysis.py # 情感分析模块
├── analyze.py # TF-IDF关键词分析
├── requirements.txt # 依赖列表
├── 大连理工大学中文情感词汇本体.xlsx # 情感词典
└── data/ # 爬取数据存储目录
└── guba_*.json/xlsx
安装依赖
pip install -r requirements.txt
使用方法
1. 爬取股吧数据
python spider.py
默认爬取以下游戏行业股票:
- 完美世界 (002624)
- 三七互娱 (002555)
- 巨人网络 (002558)
- 世纪华通 (002602)
- 昆仑万维 (300418)
- 游族网络 (002174)
- 掌趣科技 (300315)
- 吉比特 (603444)
爬取结果保存在 data/ 目录下,包含 JSON 和 Excel 两种格式。
2. 情感分析
python sentiment_analysis.py
基于大连理工大学中文情感词汇本体进行情绪分析,支持7种情绪类型:
- 正面情绪:快乐、好评、惊讶
- 负面情绪:愤怒、悲伤、恐惧、厌恶
分析结果保存在 sentiment_output/ 目录,包含:
- 各股票详细情感数据(CSV)
- 情绪统计汇总(CSV)
- 可视化图表(PNG)
3. 关键词分析
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-IDFget_top_keywords()- 获取Top关键词generate_wordcloud()- 生成词云
情感词典
使用 大连理工大学中文情感词汇本体(需自行准备),包含:
- 27469个情感词汇
- 7种情感分类
- 3种强度等级
- 2种极性(正面/负面)
备用方案:内置简化版情感词典,包含约200个常用情感词。
数据格式
爬取数据 (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 |
注意事项
- 爬虫使用模拟移动端请求,请合理控制爬取频率
- 情感词典文件需放置在项目根目录
- 首次运行可能需要下载jieba分词字典
- 生成词云需要系统安装中文字体(默认使用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