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