# WeiboInfomationAnalysisSystem
**Repository Path**: lintsinghua/WeiboInfomationAnalysisSystem
## Basic Information
- **Project Name**: WeiboInfomationAnalysisSystem
- **Description**: 微博舆情分析系统是一个企业级数据智能平台,实现了微博热门话题的自动采集、深度分析与可视化展示的全流程处理。本系统针对社交媒体中的公众情感与热点话题进行实时监控与深入挖掘,为企业品牌管理、政府决策支持、学术研究等领域提供专业的数据支持与洞察。
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 0
- **Created**: 2025-04-17
- **Last Updated**: 2025-09-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 微博舆情分析系统




## 📑 目录
- [项目概述](#项目概述)
- [核心价值](#核心价值)
- [系统架构](#系统架构)
- [功能特性](#功能特性)
- [环境要求](#环境要求)
- [快速开始](#快速开始)
- [使用指南](#使用指南)
- [项目结构](#项目结构)
- [技术栈](#技术栈)
- [开发指南](#开发指南)
- [常见问题](#常见问题)
- [许可协议](#许可协议)
## 项目概述
微博舆情分析系统是一个企业级数据智能平台,实现了微博热门话题的自动采集、深度分析与可视化展示的全流程处理。本系统针对社交媒体中的公众情感与热点话题进行实时监控与深入挖掘,为企业品牌管理、政府决策支持、学术研究等领域提供专业的数据支持与洞察。
> 💡 **核心能力**:热点识别、趋势预测、情感分析、话题聚类、实时监控
## 核心价值
- **决策支持**:为企业管理层提供基于社交媒体的实时民意反馈与市场动态
- **危机预警**:及时识别潜在舆情风险,提供预警与应对建议
- **趋势洞察**:挖掘热点话题发展规律,预测话题生命周期
- **情感画像**:精准刻画不同人群、不同地域的情感特征
- **竞争监测**:实时追踪竞争对手的社交媒体表现与公众反应
## 系统架构
系统采用现代化的分层架构设计,确保高可扩展性与稳定性:
### 架构总览
```
┌────────────────────────────────────────────────────────────┐
│ 表现层 (Presentation) │
│ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ Web界面 │ │ 数据报表 │ │ 可视化大屏 │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
└────────────────────────────────────────────────────────────┘
▲
│
▼
┌────────────────────────────────────────────────────────────┐
│ 应用层 (Application) │
│ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ 数据分析服务 │ │ API接口 │ │ 调度服务 │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
└────────────────────────────────────────────────────────────┘
▲
│
▼
┌────────────────────────────────────────────────────────────┐
│ 数据层 (Data) │
│ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ 数据采集 │ │ 数据存储 │ │ 数据预处理 │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
└────────────────────────────────────────────────────────────┘
```
### 核心组件
| 组件名称 | 技术选型 | 主要职责 |
|---------|---------|---------|
| **前端界面** | Django Templates | 数据可视化与用户交互 |
| **数据采集** | Selenium, Requests | 微博热点话题与评论采集 |
| **数据分析** | pandas, scikit-learn | 数据挖掘与模型训练 |
| **情感分析** | bhsenti, cnsenti | 文本情感倾向分析 |
| **数据存储** | MySQL | 结构化数据持久化 |
| **定时任务** | Python定时器 | 系统自动化运行 |
## 功能特性
### 🔍 实时数据采集
- **热点话题爬取**:自动获取微博热搜榜话题与热度值
- **评论内容采集**:抓取热点话题下的用户评论与互动数据
- **自动更新机制**:系统每6小时自动更新一次数据,保证时效性
### 📊 数据分析与挖掘
- **话题热度趋势分析**
- 追踪话题热度随时间的变化曲线
- 预测话题热度发展趋势
- 识别异常热度波动点
- **情感分析**
- 评论正负面情感比例统计
- 七维情感细分(喜悦、愤怒、厌恶、恐惧、悲伤、惊讶、期待)
- 情感时序变化分析
- **话题聚类分析**
- 基于语义相似度的话题聚类
- 自动生成话题关键词云图
- 热点话题内容摘要提取
### 📈 可视化展示
- **情感分析饼图**:直观展示正面、中性、负面评论占比
- **热词云图**:以视觉化方式呈现热点话题关键词
- **热度趋势图**:展示话题热度随时间变化的走势
- **七维情感雷达图**:细粒度展示复杂情感分布
## 环境要求
### 系统环境
- **操作系统**:支持Windows/Linux/MacOS
- **内存要求**:≥ 8GB RAM
- **存储空间**:≥ 10GB可用空间
- **网络环境**:需要稳定的互联网连接
### 软件依赖
- **Python版本**:3.8或更高版本
- **数据库**:MySQL 5.7+
- **浏览器**:Chrome/Firefox/Edge最新版本
- **其他依赖**:详见`requirements.txt`
## 快速开始
### 1. 环境准备
```bash
# 克隆代码仓库
git clone https://github.com/your-username/weibo_infomation_analysis.git
cd weibo_infomation_analysis
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
# 安装依赖包
pip install -r requirements.txt
```
### 2. 配置隐私信息
为了保护用户隐私和敏感信息,项目中的关键配置已替换为占位符。使用前请进行以下配置:
#### Django 设置配置
编辑 `web/web/settings.py` 文件:
```python
# 设置一个新的 SECRET_KEY,可使用 Django 提供的工具生成
# 可执行 python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
SECRET_KEY = '你的新密钥' # 替换占位符
```
#### 数据库配置
```python
# web/web/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '_system', # 数据库名称
'USER': 'root', # 数据库用户名
'PASSWORD': '你的密码', # 替换为真实密码
'HOST': '127.0.0.1', # 数据库主机地址
'PORT': '3306', # 数据库端口
}
}
```
#### 微博爬虫Cookie配置
为确保爬虫能正常工作,需要配置有效的微博Cookie:
1. 编辑 `backend/spider/hot_spider.py`:
```python
cookies = [
{'name': 'SUB', 'value': '你的SUB值', 'domain': '.weibo.com'},
{'name': 'SUBP', 'value': '你的SUBP值', 'domain': '.weibo.com'},
# 其他cookie值...
]
```
2. 编辑 `backend/spider/main_body_pull.py`:
```python
headers = {
# 其他header...
'cookie': 'SUB=你的SUB值; SUBP=你的SUBP值; _s_tentry=weibo.com; Apache=你的Apache值; SINAGLOBAL=你的SINAGLOBAL值; ULV=你的ULV值; WBtopGlobal_register_version=你的版本值',
# 其他header...
}
```
> 获取Cookie方法:登录微博网页版,使用浏览器开发者工具查看请求头中的Cookie信息
#### 前端API地址配置
如果需要将前端请求指向特定服务器地址,编辑以下文件:
1. `public/pages/login.html`:
```javascript
axios.post('http://你的服务器地址:5000/login', { ... })
```
2. `public/pages/signup.html`:
```javascript
axios.post('http://你的服务器地址:5000/register', { ... })
```
### 3. 数据库配置
```bash
# 创建MySQL数据库
mysql -u root -p
CREATE DATABASE weibo_analysis CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
### 4. 系统启动
```bash
# 启动后端服务
cd backend
python execute.py
# 启动前端服务(新终端)
cd web
python manage.py migrate # 首次运行需执行
python manage.py runserver
```
系统启动后,访问 http://127.0.0.1:8000 进入Web界面。
## 使用指南
### 系统登录
1. 在浏览器中访问系统地址 http://127.0.0.1:8000
2. 输入默认账号:admin,密码:admin123(建议首次登录后修改)
### 功能导航
- **仪表盘**:系统概览,显示关键指标
- **数据监测**:查看最新爬取的微博热点数据
- **情感分析**:查看情感分析结果和趋势图表
- **话题聚类**:查看话题聚类结果和词云图
- **系统设置**:配置系统参数和数据更新频率
### 数据导出
系统支持将分析结果导出为多种格式:
- Excel表格(.xlsx)
- CSV文件(.csv)
- 图片格式(.png/.jpg)
## 项目结构
```
weibo_infomation_analysis/
├── backend/ # 后端核心模块
│ ├── spider/ # 爬虫模块
│ │ ├── hot_spider.py # 热门话题爬虫
│ │ ├── main_body_pull.py # 内容爬取
│ │ └── spider_execute.py # 爬虫执行控制
│ ├── data_analysis/ # 数据分析模块
│ │ ├── cluster_analysis.py # 聚类分析
│ │ ├── emotion_analysis_bhsenti.py # 情感分析(bhsenti)
│ │ ├── emotion_pie.py # 情感饼图生成
│ │ ├── emotion_seven.py # 七维情感分析
│ │ ├── hottopic_analysis.py # 热门话题分析
│ │ ├── topic_popularity_analysis.py # 话题热度分析
│ │ └── data_upgrade.py # 数据更新
│ └── execute.py # 后端执行入口
├── web/ # 前端Web模块
│ ├── static/ # 静态资源
│ │ ├── css/ # 样式文件
│ │ ├── js/ # JavaScript脚本
│ │ └── images/ # 图片资源
│ ├── table/ # 数据表格模块
│ ├── login/ # 登录模块
│ ├── web/ # Django项目配置
│ └── manage.py # Django管理脚本
├── public/ # 公共资源目录
├── docs/ # 文档目录
├── requirements.txt # 依赖包列表
├── LICENSE # 许可证文件
└── README.md # 项目说明文档
```
## 技术栈
### 前端技术
- **Web框架**:Django Templates
- **UI组件**:Bootstrap 4.6
- **图表库**:ECharts 5.3
- **数据交互**:jQuery, AJAX
### 后端技术
- **开发语言**:Python 3.8+
- **Web框架**:Django 3.2+
- **数据分析**:pandas, numpy, scikit-learn
- **自然语言处理**:jieba, transformers
- **情感分析**:bhsenti, cnsenti
### 数据存储
- **数据库**:MySQL 5.7+
- **ORM**:Django ORM
### 开发工具
- **版本控制**:Git
- **IDE推荐**:PyCharm, VSCode
- **API测试**:Postman
## 开发指南
### 开发环境配置
1. 配置开发环境变量
```bash
# 开发模式
export DJANGO_SETTINGS_MODULE=web.settings.development
# 或
set DJANGO_SETTINGS_MODULE=web.settings.development # Windows
```
2. 安装开发依赖
```bash
pip install -r requirements-dev.txt
```
### 代码规范
- **Python代码**:遵循PEP8规范
- **注释**:函数和类必须有文档字符串
- **命名规范**:使用snake_case命名变量和函数,使用CamelCase命名类
### 测试指南
```bash
# 运行单元测试
python -m unittest discover
# 运行覆盖率测试
coverage run -m unittest discover
coverage report
```
### 贡献流程
1. Fork项目仓库
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add amazing feature'`)
4. 推送分支 (`git push origin feature/amazing-feature`)
5. 创建Pull Request
## 常见问题
Q: 系统启动后无法爬取数据怎么办?
A: 请检查网络连接是否正常,以及是否配置了正确的浏览器驱动。参考 backend/spider/hot_spider.py
中的配置说明进行调整。
Q: 情感分析结果不准确怎么办?
A: 系统默认使用bhsenti模型进行情感分析,您可以在 backend/data_analysis/emotion_analysis_bhsenti.py
中调整参数或切换到其他模型。
Q: 如何增加爬取频率?
A: 修改 backend/execute.py
文件中的 time.sleep(3600 * 6)
值,将6小时调整为您需要的时间间隔。
微博舆情分析系统 · 让数据洞察触手可及
Copyright © 2023 维护团队