xiaji 10ce2ba17b feat(配置): 增加playwright_dir配置项并优化浏览器路径查找逻辑
添加playwright_dir配置项以支持自定义浏览器路径
优化打包环境和开发环境下的浏览器路径查找逻辑,优先使用配置中的路径
删除不再使用的build.bat打包脚本
2026-01-21 11:54:21 +08:00

股吧人气指示器 (Guba Sentiment Indicator)

一个基于 Python + PySide6 的桌面悬浮小工具,专为股票投资者设计,通过爬取股吧或论坛评论,使用大语言模型分析投资者情绪倾向,并以直观的可视化方式展示市场人气冷暖程度。

主要功能

1. 智能评论爬取系统

  • 自定义爬取规则: 支持通过XPath表达式自定义爬取目标可灵活配置目标URL和内容选择器
  • 智能去重机制: 使用内容哈希算法自动识别和过滤重复评论,避免重复分析
  • 自适应刷新: 根据爬取结果动态调整刷新频率,无新内容时自动延长刷新间隔
  • 多重解析策略: 采用 lxml + BeautifulSoup 双重解析机制,提高爬取成功率
  • 用户代理配置: 支持自定义User-Agent增强反爬虫适应性

2. 大语言模型情感分析

  • 多模型支持: 支持OpenAI兼容API包括NVIDIA API等主流大模型平台
  • 精准情感评分: 为每条评论生成0-100分的情感倾向评分0为极度悲观100为极度乐观
  • 智能标签生成: 自动为分析结果生成情感标签(极度悲观、悲观、中立、乐观、极度乐观等)
  • 重试机制: 集成API调用重试机制应对网络波动和API限流
  • 分析历史记录: 完整保存每次分析的结果和时间戳

3. 可视化情感指示器

  • 动态指示灯: 基于分析结果实时更新的环形指示灯,颜色随情感倾向变化
  • 渐变色彩系统:
    • 0-30分: 蓝色系(悲观情绪)
    • 30-70分: 绿黄渐变(中性情绪)
    • 70-100分: 红色系(乐观情绪)
  • 精确数值显示: 实时显示当前平均情感分数和整体情绪标签
  • 发光特效: 采用发光效果增强视觉体验

3. 股票数据实时监控

  • 上证指数监控: 通过新浪财经API实时获取上证指数数据
  • 波形图展示: 以时间轴形式展示股票价格走势
  • 数据点标记: 在波形图上精确标记每个数据点的时间和价格

4. 上证所网页截图功能

  • 自动化截图: 使用Playwright自动截取上证所网页指定区域
  • 元素定位: 通过XPath精确定位图表元素进行截图
  • 定时更新: 每5分钟自动更新一次截图
  • 历史管理: 自动管理截图文件,保留最新记录

6. 桌面客户端界面

  • 悬浮窗口: 无边框设计,支持窗口拖拽和置顶显示
  • 系统托盘: 集成系统托盘功能,支持最小化到托盘
  • 透明度调节: 支持0.3-1.0范围内的透明度调节
  • 配置对话框: 图形化配置界面,支持实时修改各项参数
  • 状态显示: 实时显示当前运行状态和处理进度

7. 数据管理与持久化

  • SQLite数据库: 使用SQLite存储所有评论、分析结果和历史数据
  • 结构化存储: 评论表、分析历史表、配置表分离存储
  • 数据统计: 实时统计爬取次数、分析次数等运行指标
  • 自动清理: 支持历史数据管理和自动清理

8. 高级配置选项

  • API配置: 支持自定义API Base URL、API Key、模型选择和超时设置
  • 爬虫配置: 可调整目标URL、XPath表达式、刷新间隔等参数
  • UI配置: 支持透明度、置顶状态、情感阈值等界面设置
  • 阈值自定义: 可自定义"寒冷"(悲观)和"温暖"(乐观)的情感分界线

技术栈

核心技术

  • Python 3.10+: 主要开发语言
  • PySide6: 桌面GUI界面开发
  • SQLite: 本地数据存储
  • Requests: HTTP请求处理
  • LXML: HTML解析和XPath支持
  • BeautifulSoup4: 备选HTML解析器
  • Selenium: Web自动化备用方案
  • Playwright: 高级网页自动化和截图

AI技术

  • OpenAI API: 大语言模型接口
  • JSON解析: 结构化响应处理
  • 情感分析算法: 0-100分评分系统

开发工具

  • Loguru: 高级日志管理
  • Playwright: 自动化浏览器控制
  • PyInstaller: 应用程序打包通过build.spec

安装与配置

环境要求

  • Python 3.10 或更高版本
  • Windows/macOS/Linux 操作系统

安装步骤

  1. 克隆或下载项目
git clone <repository-url>
cd guba
  1. 安装Python依赖
pip install -r requirements.txt
  1. 安装Playwright浏览器驱动
playwright install chromium
  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
  }
}

运行程序

python main.py

配置详解

LLM API配置

  • base_url: 大模型API的基础URL
  • api_key: API访问密钥
  • model: 使用的模型名称
  • timeout: API请求超时时间
  • retry_times: API调用失败时的重试次数

爬虫配置

  • target_url: 目标网站URL
  • xpath: 用于提取评论的XPath表达式
  • user_agent: HTTP请求的User-Agent字符串
  • fetch_interval: 爬取间隔时间(秒)
  • retry_times: 爬取失败重试次数
  • retry_interval: 爬取重试间隔(秒)

UI配置

  • opacity: 窗口透明度0.3-1.0
  • is_on_top: 是否置顶显示
  • thresholds: 情感阈值设置
    • cold: 悲观阈值默认30
    • warm: 乐观阈值默认70

数据库配置

  • path: SQLite数据库文件路径

日志配置

  • level: 日志级别INFO/DEBUG/ERROR等
  • path: 日志文件路径

使用说明

基本操作

  1. 启动程序后,主界面将显示情感指示器
  2. 程序自动开始爬取评论并分析情感
  3. 指示器颜色和数值实时反映市场情绪
  4. 波形图显示股票价格走势

按钮功能

  • 刷新: 手动触发一次评论爬取和分析
  • 配置: 打开配置对话框修改各项参数
  • 退出: 关闭应用程序

系统托盘菜单

  • 显示: 显示主窗口
  • 隐藏: 隐藏到系统托盘
  • 退出: 完全退出程序

高级功能

批量分析模式

支持一次性分析多条评论,适用于历史数据分析场景。

实时数据统计

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

  • 爬取网站次数
  • 提交API分析次数
  • 评论总数和已分析数
  • 平均情感分数趋势

自定义情感标签

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

  • 0-30分: 极度悲观
  • 30-39分: 悲观
  • 39-45分: 偏悲观
  • 45-55分: 中立
  • 55-65分: 偏乐观
  • 65-70分: 乐观
  • 70-100分: 极度乐观

故障排除

常见问题

  1. 无法获取评论

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

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

    • 检查PySide6是否正确安装
    • 尝试调整透明度设置

日志文件

运行日志保存在 guba.log 文件中,记录所有操作和错误信息。

统计信息

程序退出时会生成运行统计信息,保存在 statistics.txt 文件中。

打包发布

项目提供PyInstaller打包配置build.spec可将应用打包为独立可执行文件

# 安装PyInstaller
pip install pyinstaller

# 打包应用
pyinstaller build.spec

# 执行文件将在dist目录下生成

注意事项

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

开发扩展

模块结构

  • main.py: 主程序入口,负责组件初始化和信号连接
  • main_window.py: GUI界面和用户交互处理
  • config_manager.py: 配置文件管理和持久化
  • database.py: SQLite数据库操作和数据管理
  • spider.py: 网页爬取和数据提取
  • llm_analyzer.py: 大语言模型情感分析
  • waveform_widget.py: 股票数据波形图绘制
  • screenshot_manager.py: 网页截图功能

二次开发

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

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

许可证

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

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