Files
guba-indicator/README.md
xiaji e90bbfec7d refactor: 移除波形图组件并更新README文档
移除不再使用的波形图组件及相关代码,简化主窗口结构。同时全面更新README文档,详细描述项目功能、技术栈和使用说明,使其更加专业和完善。
2026-01-14 13:10:52 +08:00

280 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 股吧人气指示器 (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分: 红色系(乐观情绪)
- **精确数值显示**: 实时显示当前平均情感分数和整体情绪标签
- **发光特效**: 采用发光效果增强视觉体验
### 4. 股票数据实时监控
- **上证指数监控**: 通过新浪财经API实时获取上证指数数据
- **交易时间识别**: 自动识别交易时间,非交易时间自动跳过数据获取
- **波形图展示**: 以时间轴形式展示股票价格走势,支持上午和下午交易时段
- **数据点标记**: 在波形图上精确标记每个数据点的时间和价格
### 5. 上证所网页截图功能
- **自动化截图**: 使用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. **克隆或下载项目**
```bash
git clone <repository-url>
cd guba
```
2. **安装Python依赖**
```bash
pip install -r requirements.txt
```
3. **安装Playwright浏览器驱动**
```bash
playwright install chromium
```
4. **配置API密钥**
编辑 `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
}
}
```
5. **配置爬取参数**
在配置中设置目标URL和XPath表达式
```json
{
"spider": {
"target_url": "https://example.com",
"xpath": "//a[contains(@class, 'linkblack')]",
"fetch_interval": 15
}
}
```
### 运行程序
```bash
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. 波形图显示股票价格走势
### 按钮功能
- **刷新**: 手动触发一次评论爬取和分析
- **配置**: 打开配置对话框修改各项参数
- **退出**: 关闭应用程序
### 系统托盘菜单
- **显示**: 显示主窗口
- **隐藏**: 隐藏到系统托盘
- **退出**: 完全退出程序
### 交易时间说明
- 上午交易时间: 9:30-11:30
- 下午交易时间: 13:00-15:00
- 非交易时间自动跳过数据获取,显示静态图表
## 高级功能
### 批量分析模式
支持一次性分析多条评论,适用于历史数据分析场景。
### 实时数据统计
程序会统计以下运行指标:
- 爬取网站次数
- 提交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可将应用打包为独立可执行文件
```bash
# 安装PyInstaller
pip install pyinstaller
# 打包应用
pyinstaller build.spec
# 执行文件将在dist目录下生成
```
## 注意事项
1. **API费用**: 使用大语言模型API可能产生费用请注意控制调用频率
2. **网络环境**: 确保网络连接稳定以保证爬取和API调用的正常进行
3. **反爬虫**: 遵守目标网站的robots.txt协议和使用条款
4. **数据隐私**: 所有数据本地存储,不会上传到第三方服务器
5. **交易时间**: 系统仅在交易时间获取实时股票数据
## 开发扩展
### 模块结构
- `main.py`: 主程序入口,负责组件初始化和信号连接
- `main_window.py`: GUI界面和用户交互处理
- `config_manager.py`: 配置文件管理和持久化
- `database.py`: SQLite数据库操作和数据管理
- `spider.py`: 网页爬取和数据提取
- `llm_analyzer.py`: 大语言模型情感分析
- `waveform_widget.py`: 股票数据波形图绘制
- `screenshot_manager.py`: 网页截图功能
### 二次开发
项目采用模块化设计,易于扩展新功能:
- 可添加新的爬取目标和解析规则
- 支持接入其他大模型API
- 可扩展更多数据可视化方式
- 支持多股票同时监控
## 许可证
本项目仅供学习交流使用,请遵守相关法律法规和网站使用条款。