2026-01-14 13:10:52 +08:00
|
|
|
|
# 股吧人气指示器 (Guba Sentiment Indicator)
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
一个基于 **Rust + eframe** 的桌面悬浮小工具,专为股票投资者设计,通过爬取股吧或论坛评论,使用大语言模型分析投资者情绪倾向,并以直观的可视化方式展示市场人气冷暖程度。
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
|
|
|
|
|
## 主要功能
|
|
|
|
|
|
|
2026-01-14 13:10:52 +08:00
|
|
|
|
### 1. 智能评论爬取系统
|
|
|
|
|
|
- **自定义爬取规则**: 支持通过XPath表达式自定义爬取目标,可灵活配置目标URL和内容选择器
|
|
|
|
|
|
- **智能去重机制**: 使用内容哈希算法自动识别和过滤重复评论,避免重复分析
|
|
|
|
|
|
- **自适应刷新**: 根据爬取结果动态调整刷新频率,无新内容时自动延长刷新间隔
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **多重解析策略**: 采用正则表达式多重解析机制,提高爬取成功率
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **用户代理配置**: 支持自定义User-Agent,增强反爬虫适应性
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 大语言模型情感分析
|
|
|
|
|
|
- **多模型支持**: 支持OpenAI兼容API,包括NVIDIA API等主流大模型平台
|
|
|
|
|
|
- **精准情感评分**: 为每条评论生成0-100分的情感倾向评分(0为极度悲观,100为极度乐观)
|
|
|
|
|
|
- **智能标签生成**: 自动为分析结果生成情感标签(极度悲观、悲观、中立、乐观、极度乐观等)
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **API测试功能**: 配置界面提供API连接测试,确保配置正确
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **分析历史记录**: 完整保存每次分析的结果和时间戳
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 可视化情感指示器
|
|
|
|
|
|
- **动态指示灯**: 基于分析结果实时更新的环形指示灯,颜色随情感倾向变化
|
|
|
|
|
|
- **渐变色彩系统**:
|
|
|
|
|
|
- 0-30分: 蓝色系(悲观情绪)
|
|
|
|
|
|
- 30-70分: 绿黄渐变(中性情绪)
|
|
|
|
|
|
- 70-100分: 红色系(乐观情绪)
|
|
|
|
|
|
- **精确数值显示**: 实时显示当前平均情感分数和整体情绪标签
|
|
|
|
|
|
- **发光特效**: 采用发光效果增强视觉体验
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
### 4. 股票数据可视化
|
|
|
|
|
|
- **上证指数实时数据**: 自动获取上证指数数据并绘制波形图
|
|
|
|
|
|
- **历史数据追踪**: 保留最近100个数据点,展示价格变化趋势
|
|
|
|
|
|
- **图表自动更新**: 与评论分析同步更新
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
2026-02-05 17:08:49 +08:00
|
|
|
|
### 5. 桌面客户端界面
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **悬浮窗口**: 现代化无边框设计,支持窗口拖拽和置顶显示
|
|
|
|
|
|
- **白色主题**: 简洁美观的白色主题界面,提高可读性
|
|
|
|
|
|
- **中文字体支持**: 自动加载系统中文字体,确保界面显示正常
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **配置对话框**: 图形化配置界面,支持实时修改各项参数
|
|
|
|
|
|
- **状态显示**: 实时显示当前运行状态和处理进度
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
2026-02-05 17:08:49 +08:00
|
|
|
|
### 6. 数据管理与持久化
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **SQLite数据库**: 使用SQLite存储所有评论、分析结果和历史数据
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **结构化存储**: 评论表、分析历史表分离存储
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **数据统计**: 实时统计爬取次数、分析次数等运行指标
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **自动清理**: 支持历史数据管理
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
2026-02-05 17:08:49 +08:00
|
|
|
|
### 7. 高级配置选项
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **API配置**: 支持自定义API Base URL、API Key、模型选择和超时设置
|
|
|
|
|
|
- **爬虫配置**: 可调整目标URL、XPath表达式、刷新间隔等参数
|
|
|
|
|
|
- **UI配置**: 支持透明度、置顶状态、情感阈值等界面设置
|
|
|
|
|
|
- **阈值自定义**: 可自定义"寒冷"(悲观)和"温暖"(乐观)的情感分界线
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
### Rust版本(当前版本)
|
|
|
|
|
|
- **Rust 1.70+**: 主要开发语言
|
|
|
|
|
|
- **eframe/egui**: 现代化跨平台GUI框架
|
|
|
|
|
|
- **SQLite**: 本地数据存储(通过rusqlite)
|
|
|
|
|
|
- **reqwest**: HTTP请求处理
|
|
|
|
|
|
- **serde**: 序列化/反序列化
|
|
|
|
|
|
- **tokio**: 异步运行时
|
|
|
|
|
|
- **regex**: 正则表达式解析
|
|
|
|
|
|
- **chrono**: 时间处理
|
|
|
|
|
|
- **parking_lot**: 线程安全锁
|
|
|
|
|
|
|
|
|
|
|
|
### Python版本(旧版本)
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **Python 3.10+**: 主要开发语言
|
|
|
|
|
|
- **PySide6**: 桌面GUI界面开发
|
|
|
|
|
|
- **SQLite**: 本地数据存储
|
|
|
|
|
|
- **Requests**: HTTP请求处理
|
|
|
|
|
|
- **LXML**: HTML解析和XPath支持
|
|
|
|
|
|
- **BeautifulSoup4**: 备选HTML解析器
|
|
|
|
|
|
- **Playwright**: 高级网页自动化和截图
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
2026-01-14 13:10:52 +08:00
|
|
|
|
## 安装与配置
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
### 环境要求(Rust版本)
|
|
|
|
|
|
- **Windows 10/11**: 64位系统
|
|
|
|
|
|
- **MSYS2 + MinGW**: 用于编译Rust代码
|
|
|
|
|
|
- **Rust 1.70+**: 安装rustup后自动管理
|
2026-01-14 13:10:52 +08:00
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
### 安装步骤(Rust版本)
|
2026-01-14 13:10:52 +08:00
|
|
|
|
|
|
|
|
|
|
1. **克隆或下载项目**
|
|
|
|
|
|
```bash
|
2026-04-07 17:27:38 +08:00
|
|
|
|
git clone http://124.223.26.33:3000/xiaji/guba-indicator.git
|
2026-01-14 13:10:52 +08:00
|
|
|
|
cd guba
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
2. **编译项目**
|
2026-01-14 13:10:52 +08:00
|
|
|
|
```bash
|
2026-04-07 17:27:38 +08:00
|
|
|
|
# 进入rust目录
|
|
|
|
|
|
cd rust
|
2026-01-14 13:10:52 +08:00
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
# 编译release版本(无控制台窗口)
|
|
|
|
|
|
cargo build --release
|
|
|
|
|
|
|
|
|
|
|
|
# 生成的可执行文件在 target/release/guba.exe
|
2026-01-14 13:10:52 +08:00
|
|
|
|
```
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
3. **配置API密钥**
|
2026-01-14 13:10:52 +08:00
|
|
|
|
编辑 `config.json` 文件,填入您的大语言模型API配置:
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"llm_api": {
|
|
|
|
|
|
"base_url": "https://integrate.api.nvidia.com/v1",
|
|
|
|
|
|
"api_key": "your-api-key-here",
|
|
|
|
|
|
"model": "deepseek-ai/deepseek-r1",
|
|
|
|
|
|
"timeout": 120
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
4. **配置爬取参数**
|
2026-01-14 13:10:52 +08:00
|
|
|
|
在配置中设置目标URL和XPath表达式:
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"spider": {
|
|
|
|
|
|
"target_url": "https://example.com",
|
|
|
|
|
|
"xpath": "//a[contains(@class, 'linkblack')]",
|
|
|
|
|
|
"fetch_interval": 15
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
|
|
|
|
|
### 运行程序
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **直接运行**: 双击 `guba-rust.exe` 文件
|
|
|
|
|
|
- **无控制台窗口**: 程序以GUI模式运行,不会显示命令行窗口
|
|
|
|
|
|
- **图标支持**: 程序使用 `guba.ico` 作为应用图标
|
2026-01-12 09:23:28 +08:00
|
|
|
|
|
2026-01-14 13:10:52 +08:00
|
|
|
|
## 配置详解
|
|
|
|
|
|
|
|
|
|
|
|
### LLM API配置
|
|
|
|
|
|
- `base_url`: 大模型API的基础URL
|
|
|
|
|
|
- `api_key`: API访问密钥
|
|
|
|
|
|
- `model`: 使用的模型名称
|
|
|
|
|
|
- `timeout`: API请求超时时间(秒)
|
|
|
|
|
|
|
|
|
|
|
|
### 爬虫配置
|
|
|
|
|
|
- `target_url`: 目标网站URL
|
|
|
|
|
|
- `xpath`: 用于提取评论的XPath表达式
|
|
|
|
|
|
- `user_agent`: HTTP请求的User-Agent字符串
|
|
|
|
|
|
- `fetch_interval`: 爬取间隔时间(秒)
|
|
|
|
|
|
|
|
|
|
|
|
### UI配置
|
|
|
|
|
|
- `opacity`: 窗口透明度(0.3-1.0)
|
|
|
|
|
|
- `is_on_top`: 是否置顶显示
|
|
|
|
|
|
- `thresholds`: 情感阈值设置
|
|
|
|
|
|
- `cold`: 悲观阈值(默认30)
|
|
|
|
|
|
- `warm`: 乐观阈值(默认70)
|
|
|
|
|
|
|
|
|
|
|
|
### 数据库配置
|
|
|
|
|
|
- `path`: SQLite数据库文件路径
|
|
|
|
|
|
|
|
|
|
|
|
## 使用说明
|
|
|
|
|
|
|
|
|
|
|
|
### 基本操作
|
|
|
|
|
|
1. 启动程序后,主界面将显示情感指示器
|
|
|
|
|
|
2. 程序自动开始爬取评论并分析情感
|
|
|
|
|
|
3. 指示器颜色和数值实时反映市场情绪
|
2026-04-07 17:27:38 +08:00
|
|
|
|
4. 波形图显示上证指数走势
|
2026-01-14 13:10:52 +08:00
|
|
|
|
|
|
|
|
|
|
### 按钮功能
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- **开始/停止**: 控制爬取和分析过程
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- **刷新**: 手动触发一次评论爬取和分析
|
|
|
|
|
|
- **配置**: 打开配置对话框修改各项参数
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
### 配置界面
|
|
|
|
|
|
- **API配置**: 设置大语言模型API参数,包含测试按钮验证配置
|
|
|
|
|
|
- **爬虫配置**: 设置目标网站和爬取参数
|
|
|
|
|
|
- **阈值设置**: 调整情感分析的阈值
|
|
|
|
|
|
- **界面设置**: 调整窗口透明度和置顶状态
|
2026-01-14 13:10:52 +08:00
|
|
|
|
|
|
|
|
|
|
## 高级功能
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
### API测试功能
|
|
|
|
|
|
在配置界面中点击"测试API"按钮,程序会:
|
|
|
|
|
|
- 检查API连接是否正常
|
|
|
|
|
|
- 验证API Key是否有效
|
|
|
|
|
|
- 获取并显示可用的模型列表
|
|
|
|
|
|
- 显示测试结果和状态
|
2026-01-14 13:10:52 +08:00
|
|
|
|
|
|
|
|
|
|
### 实时数据统计
|
|
|
|
|
|
程序会统计以下运行指标:
|
|
|
|
|
|
- 爬取网站次数
|
|
|
|
|
|
- 提交API分析次数
|
|
|
|
|
|
- 平均情感分数趋势
|
|
|
|
|
|
|
|
|
|
|
|
### 自定义情感标签
|
|
|
|
|
|
系统根据以下规则自动分类情感:
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- 0-29分: 极度悲观
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- 30-39分: 悲观
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- 40-44分: 偏悲观
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- 45-55分: 中立
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- 56-64分: 偏乐观
|
|
|
|
|
|
- 65-69分: 乐观
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- 70-100分: 极度乐观
|
|
|
|
|
|
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
1. **无法获取评论**
|
|
|
|
|
|
- 检查目标URL是否可访问
|
|
|
|
|
|
- 验证XPath表达式是否正确
|
|
|
|
|
|
- 确认网络连接正常
|
|
|
|
|
|
|
|
|
|
|
|
2. **API调用失败**
|
|
|
|
|
|
- 检查API Key是否正确
|
|
|
|
|
|
- 确认API服务是否可用
|
|
|
|
|
|
- 查看网络连接和防火墙设置
|
|
|
|
|
|
|
|
|
|
|
|
3. **界面显示异常**
|
2026-04-07 17:27:38 +08:00
|
|
|
|
- 检查系统中是否安装了中文字体
|
2026-01-14 13:10:52 +08:00
|
|
|
|
- 尝试调整透明度设置
|
|
|
|
|
|
|
|
|
|
|
|
### 日志文件
|
2026-04-07 17:27:38 +08:00
|
|
|
|
运行日志输出到控制台,可通过命令行启动查看详细信息:
|
2026-01-14 13:10:52 +08:00
|
|
|
|
```bash
|
2026-04-07 17:27:38 +08:00
|
|
|
|
# 查看日志
|
|
|
|
|
|
.uba-rust.exe > log.txt 2>&1
|
2026-02-03 17:19:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-04-07 17:27:38 +08:00
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
### Rust版本
|
|
|
|
|
|
- `rust/src/main.rs`: 主程序入口
|
|
|
|
|
|
- `rust/src/config.rs`: 配置管理
|
|
|
|
|
|
- `rust/src/database.rs`: 数据库操作
|
|
|
|
|
|
- `rust/src/spider.rs`: 网页爬取
|
|
|
|
|
|
- `rust/src/analyzer.rs`: 情感分析
|
|
|
|
|
|
- `rust/src/ui.rs`: 界面组件
|
|
|
|
|
|
- `rust/Cargo.toml`: 项目依赖配置
|
|
|
|
|
|
- `rust/build.rs`: Windows资源配置
|
|
|
|
|
|
|
|
|
|
|
|
### Python版本(保留)
|
|
|
|
|
|
- `main.py`: 主程序入口
|
|
|
|
|
|
- `main_window.py`: GUI界面
|
|
|
|
|
|
- `config_manager.py`: 配置管理
|
|
|
|
|
|
- `database.py`: 数据库操作
|
|
|
|
|
|
- `spider.py`: 网页爬取
|
|
|
|
|
|
- `llm_analyzer.py`: 情感分析
|
|
|
|
|
|
- `waveform_widget.py`: 波形图绘制
|
|
|
|
|
|
|
|
|
|
|
|
## 编译说明
|
|
|
|
|
|
|
|
|
|
|
|
### MSYS2 + MinGW编译
|
|
|
|
|
|
项目使用MSYS2的MinGW工具链编译:
|
|
|
|
|
|
|
|
|
|
|
|
1. **安装MSYS2**
|
|
|
|
|
|
- 下载并安装 [MSYS2](https://www.msys2.org/)
|
|
|
|
|
|
- 安装MinGW工具链:`pacman -S mingw-w64-x86_64-toolchain`
|
|
|
|
|
|
|
|
|
|
|
|
2. **设置Rust工具链**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
rustup default stable-x86_64-pc-windows-gnu
|
|
|
|
|
|
rustup target add x86_64-pc-windows-gnu
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
3. **编译命令**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 进入rust目录
|
|
|
|
|
|
cd rust
|
|
|
|
|
|
|
|
|
|
|
|
# 清理之前的构建
|
|
|
|
|
|
cargo clean
|
|
|
|
|
|
|
|
|
|
|
|
# 编译release版本
|
|
|
|
|
|
cargo build --release
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
4. **输出文件**
|
|
|
|
|
|
- 编译后的可执行文件:`target/release/guba.exe`
|
|
|
|
|
|
- 复制到项目根目录:`guba-rust.exe`
|
2026-02-03 17:19:24 +08:00
|
|
|
|
|
2026-01-12 09:23:28 +08:00
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
2026-01-14 13:10:52 +08:00
|
|
|
|
1. **API费用**: 使用大语言模型API可能产生费用,请注意控制调用频率
|
|
|
|
|
|
2. **网络环境**: 确保网络连接稳定,以保证爬取和API调用的正常进行
|
|
|
|
|
|
3. **反爬虫**: 遵守目标网站的robots.txt协议和使用条款
|
|
|
|
|
|
4. **数据隐私**: 所有数据本地存储,不会上传到第三方服务器
|
|
|
|
|
|
|
|
|
|
|
|
## 开发扩展
|
|
|
|
|
|
|
|
|
|
|
|
### 模块结构
|
|
|
|
|
|
项目采用模块化设计,易于扩展新功能:
|
|
|
|
|
|
- 可添加新的爬取目标和解析规则
|
|
|
|
|
|
- 支持接入其他大模型API
|
|
|
|
|
|
- 可扩展更多数据可视化方式
|
|
|
|
|
|
- 支持多股票同时监控
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
本项目仅供学习交流使用,请遵守相关法律法规和网站使用条款。
|