2026-03-23 17:30:20 +08:00

股吧人气指示器 (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版本

  1. 克隆或下载项目
git clone http://124.223.26.33:3000/xiaji/guba-indicator.git
cd guba
  1. 编译项目
# 进入rust目录
cd rust

# 编译release版本无控制台窗口
cargo build --release

# 生成的可执行文件在 target/release/guba.exe
  1. 配置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
  }
}
  1. 配置爬取参数 在配置中设置目标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的基础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. 指示器颜色和数值实时反映市场情绪
  4. 波形图显示上证指数走势

按钮功能

  • 开始/停止: 控制爬取和分析过程
  • 刷新: 手动触发一次评论爬取和分析
  • 配置: 打开配置对话框修改各项参数

配置界面

  • API配置: 设置大语言模型API参数包含测试按钮验证配置
  • 爬虫配置: 设置目标网站和爬取参数
  • 阈值设置: 调整情感分析的阈值
  • 界面设置: 调整窗口透明度和置顶状态

高级功能

API测试功能

在配置界面中点击"测试API"按钮,程序会:

  • 检查API连接是否正常
  • 验证API Key是否有效
  • 获取并显示可用的模型列表
  • 显示测试结果和状态

实时数据统计

程序会统计以下运行指标:

  • 爬取网站次数
  • 提交API分析次数
  • 平均情感分数趋势

自定义情感标签

系统根据以下规则自动分类情感:

  • 0-29分: 极度悲观
  • 30-39分: 悲观
  • 40-44分: 偏悲观
  • 45-55分: 中立
  • 56-64分: 偏乐观
  • 65-69分: 乐观
  • 70-100分: 极度乐观

故障排除

常见问题

  1. 无法获取评论

    • 检查目标URL是否可访问
    • 验证XPath表达式是否正确
    • 确认网络连接正常
  2. API调用失败

    • 检查API Key是否正确
    • 确认API服务是否可用
    • 查看网络连接和防火墙设置
  3. 界面显示异常

    • 检查系统中是否安装了中文字体
    • 尝试调整透明度设置

日志文件

运行日志输出到控制台,可通过命令行启动查看详细信息:

# 查看日志
.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工具链编译

  1. 安装MSYS2

    • 下载并安装 MSYS2
    • 安装MinGW工具链pacman -S mingw-w64-x86_64-toolchain
  2. 设置Rust工具链

    rustup default stable-x86_64-pc-windows-gnu
    rustup target add x86_64-pc-windows-gnu
    
  3. 编译命令

    # 进入rust目录
    cd rust
    
    # 清理之前的构建
    cargo clean
    
    # 编译release版本
    cargo build --release
    
  4. 输出文件

    • 编译后的可执行文件:target/release/guba.exe
    • 复制到项目根目录:guba-rust.exe

注意事项

  1. API费用: 使用大语言模型API可能产生费用请注意控制调用频率
  2. 网络环境: 确保网络连接稳定以保证爬取和API调用的正常进行
  3. 反爬虫: 遵守目标网站的robots.txt协议和使用条款
  4. 数据隐私: 所有数据本地存储,不会上传到第三方服务器

开发扩展

模块结构

项目采用模块化设计,易于扩展新功能:

  • 可添加新的爬取目标和解析规则
  • 支持接入其他大模型API
  • 可扩展更多数据可视化方式
  • 支持多股票同时监控

许可证

本项目仅供学习交流使用,请遵守相关法律法规和网站使用条款。

Description
guba.sina.com.cn的指向标,分析内容是看多还是看空。
Readme 812 MiB
Languages
Makefile 66.9%
Rust 17.9%
Python 15%
Java 0.1%