2025-12-05 18:11:59 +08:00
|
|
|
|
# TopHub数据处理与产品分析系统
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
本项目包含两个核心功能模块:
|
|
|
|
|
|
1. TopHub网站数据抓取与处理系统
|
|
|
|
|
|
2. ProductHunt产品抓取与AI分析系统
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 功能特点
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### TopHub数据抓取与处理
|
|
|
|
|
|
- **网站抓取**:从tophub.today网站抓取数据,支持节点ID范围遍历
|
|
|
|
|
|
- **智能过滤**:根据过滤列表自动跳过指定栏目内容
|
|
|
|
|
|
- **数据存储**:将抓取数据保存到SQLite数据库
|
|
|
|
|
|
- **分类处理**:调用本地API进行智能分类
|
|
|
|
|
|
- **去重处理**:避免重复数据录入
|
|
|
|
|
|
- **分类标准化**:相似分类自动合并
|
|
|
|
|
|
|
|
|
|
|
|
### ProductHunt产品分析
|
|
|
|
|
|
- **产品抓取**:从ProductHunt抓取产品详细信息
|
|
|
|
|
|
- **AI分析**:调用Ollama API分析产品开发难度
|
|
|
|
|
|
- **数据管理**:完整的产品数据库管理
|
|
|
|
|
|
- **关注数转换**:将文本形式的关注数转换为数字
|
|
|
|
|
|
- **难度评分**:自动计算产品开发难度分数
|
|
|
|
|
|
- **缺失数据补充**:自动补全缺失的产品链接和评分
|
|
|
|
|
|
|
|
|
|
|
|
### 数据可视化
|
|
|
|
|
|
- **GUI查看器**:使用PySide6构建的可视化数据查看器
|
|
|
|
|
|
- **搜索筛选**:支持关键词搜索和分类筛选
|
|
|
|
|
|
- **分类统计**:实时显示分类统计信息
|
|
|
|
|
|
- **数据操作**:支持批量删除、标记感兴趣和评分调整
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 文件说明
|
|
|
|
|
|
|
|
|
|
|
|
### 核心脚本
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
1. **tophub_scraper.py** - TopHub网站数据抓取脚本
|
|
|
|
|
|
- 从tophub.today网站抓取数据
|
|
|
|
|
|
- 根据过滤列表过滤内容
|
|
|
|
|
|
- 保存数据到临时文件
|
|
|
|
|
|
- 调用数据导入脚本
|
|
|
|
|
|
|
|
|
|
|
|
2. **product/integrated_product_system.py** - 全功能产品抓取与分析系统
|
|
|
|
|
|
- 整合产品抓取和AI分析功能
|
|
|
|
|
|
- 从tophub数据库查询ProductHunt链接
|
|
|
|
|
|
- 使用Playwright抓取产品详细信息
|
|
|
|
|
|
- 调用Ollama API分析产品开发难度
|
|
|
|
|
|
- 管理产品数据库
|
|
|
|
|
|
- 提供完整的工作流程
|
|
|
|
|
|
|
|
|
|
|
|
3. **db_viewer.py** - TopHub数据查看器
|
|
|
|
|
|
- PySide6界面应用程序
|
|
|
|
|
|
- 显示SQLite数据库中的抓取数据
|
|
|
|
|
|
- 支持搜索、筛选和分类统计
|
|
|
|
|
|
- 支持链接点击和数据操作
|
|
|
|
|
|
|
|
|
|
|
|
### 辅助脚本
|
|
|
|
|
|
|
|
|
|
|
|
1. **process_temp_files.py** - 临时文件处理脚本
|
2025-11-09 17:20:44 +08:00
|
|
|
|
- 解析临时文件
|
|
|
|
|
|
- 调用API进行分类
|
|
|
|
|
|
- 存储到数据库
|
|
|
|
|
|
|
|
|
|
|
|
2. **cleanup_categories.py** - 分类清理脚本
|
|
|
|
|
|
- 清理分类中的特殊字符
|
|
|
|
|
|
- 统一分类格式
|
|
|
|
|
|
|
|
|
|
|
|
3. **standardize_categories.py** - 分类标准化脚本
|
|
|
|
|
|
- 将相似分类合并为标准分类
|
|
|
|
|
|
- 提供分类映射规则
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
4. **run_viewer.py** - 数据库查看器启动脚本
|
|
|
|
|
|
- 检查依赖包
|
|
|
|
|
|
- 启动SQLite数据库查看器
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
5. **check_db.py** - 数据库结构检查脚本
|
|
|
|
|
|
6. **test_api.py** - API测试脚本
|
|
|
|
|
|
7. **view_categories.py** - 查看分类示例脚本
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### 1. TopHub数据抓取
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-12-05 18:11:59 +08:00
|
|
|
|
python tophub_scraper.py
|
2025-11-09 17:20:44 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
该脚本会:
|
2025-12-05 18:11:59 +08:00
|
|
|
|
- 从tophub.today网站抓取数据
|
|
|
|
|
|
- 根据过滤列表过滤内容(可配置tophub_ban_column.txt)
|
|
|
|
|
|
- 将抓取数据保存为临时文件(格式:YYYY年MM月DD日HHMMSS.txt)
|
|
|
|
|
|
- 调用数据导入脚本处理抓取结果
|
|
|
|
|
|
|
|
|
|
|
|
### 2. ProductHunt产品抓取与分析
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 运行完整工作流程:抓取+分析+数据补充
|
|
|
|
|
|
python product/integrated_product_system.py
|
|
|
|
|
|
|
|
|
|
|
|
# 仅进行分析,不抓取数据
|
|
|
|
|
|
python product/integrated_product_system.py --analyze-only
|
|
|
|
|
|
|
|
|
|
|
|
# 限制最大分析产品数量
|
|
|
|
|
|
python product/integrated_product_system.py --max-products 100
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
主要功能:
|
|
|
|
|
|
- 从tophub数据库查询ProductHunt链接
|
|
|
|
|
|
- 使用Playwright抓取产品详细信息
|
|
|
|
|
|
- 调用Ollama API分析产品开发难度
|
|
|
|
|
|
- 自动计算难度分数
|
|
|
|
|
|
- 转换用户关注数为数字格式
|
|
|
|
|
|
- 补全缺失的产品链接
|
|
|
|
|
|
- 重新分析无效难度评分
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 数据可视化查看
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 启动数据库查看器
|
|
|
|
|
|
python db_viewer.py
|
|
|
|
|
|
```
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
或使用启动脚本:
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-12-05 18:11:59 +08:00
|
|
|
|
python run_viewer.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
查看器功能:
|
|
|
|
|
|
- 显示数据库中的抓取数据
|
|
|
|
|
|
- 支持关键词搜索和分类筛选
|
|
|
|
|
|
- 实时分类统计显示
|
|
|
|
|
|
- 支持链接点击在浏览器中打开
|
|
|
|
|
|
- 支持批量删除和评分调整
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 分类处理
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 处理临时文件
|
|
|
|
|
|
python process_temp_files.py
|
|
|
|
|
|
|
2025-11-09 17:20:44 +08:00
|
|
|
|
# 清理分类中的特殊字符
|
|
|
|
|
|
python cleanup_categories.py
|
|
|
|
|
|
|
|
|
|
|
|
# 标准化分类
|
|
|
|
|
|
python standardize_categories.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
## 数据库结构
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### 1. TopHub数据数据库 (tophub_data.db)
|
|
|
|
|
|
|
|
|
|
|
|
包含TopHub网站抓取的原始数据:
|
|
|
|
|
|
|
|
|
|
|
|
- **articles** - 主数据表
|
|
|
|
|
|
- id: 主键
|
|
|
|
|
|
- title: 标题内容
|
|
|
|
|
|
- url: 链接
|
|
|
|
|
|
- category: 分类
|
|
|
|
|
|
- source_date: 来源日期
|
|
|
|
|
|
- score: 评分
|
|
|
|
|
|
- is_interested: 是否感兴趣
|
|
|
|
|
|
|
|
|
|
|
|
- **classification_progress** - 分类进度表
|
|
|
|
|
|
- id: 主键
|
|
|
|
|
|
- total_count: 总数量
|
|
|
|
|
|
- processed_count: 已处理数量
|
|
|
|
|
|
- last_updated: 最后更新时间
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 产品分析数据库 (products.db)
|
|
|
|
|
|
|
|
|
|
|
|
包含ProductHunt产品的详细信息和分析结果:
|
|
|
|
|
|
|
|
|
|
|
|
- **products** - 产品信息表
|
|
|
|
|
|
- id: 主键
|
|
|
|
|
|
- url: 产品链接(唯一)
|
|
|
|
|
|
- name: 产品名称
|
|
|
|
|
|
- introduction: 产品简介
|
|
|
|
|
|
- user_count: 用户数量
|
|
|
|
|
|
- maker_link: 制作者链接
|
|
|
|
|
|
- maker_statement: 制作者声明
|
|
|
|
|
|
- created_at: 创建时间
|
|
|
|
|
|
- updated_at: 更新时间
|
|
|
|
|
|
|
|
|
|
|
|
- **product_analysis** - 产品分析结果表
|
|
|
|
|
|
- id: 主键
|
|
|
|
|
|
- original_name: 原始产品名称
|
|
|
|
|
|
- product_intro: 产品简介
|
|
|
|
|
|
- development_difficulty: 开发难度描述
|
|
|
|
|
|
- ai_response: AI原始响应
|
|
|
|
|
|
- difficulty_score: 难度分数
|
|
|
|
|
|
- product_link: 产品链接
|
|
|
|
|
|
- follows: 关注数
|
|
|
|
|
|
- created_at: 创建时间
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
## API配置
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
项目使用本地Ollama API进行AI相关任务:
|
|
|
|
|
|
- **API地址**:http://localhost:11434/api/generate
|
|
|
|
|
|
- **模型**:qwen3:8b
|
|
|
|
|
|
- **请求格式**:JSON
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
主要用途:
|
|
|
|
|
|
1. **TopHub数据分类**:对抓取的标题进行智能分类
|
|
|
|
|
|
2. **产品开发难度分析**:分析ProductHunt产品的开发难度
|
|
|
|
|
|
3. **用户关注数转换**:将文本形式的关注数转换为数字
|
|
|
|
|
|
4. **难度评分计算**:自动计算产品开发难度分数
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
## 核心依赖
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### 基础依赖
|
|
|
|
|
|
- requests: HTTP请求处理
|
|
|
|
|
|
- sqlite3: 数据库操作
|
|
|
|
|
|
- loguru: 日志记录
|
|
|
|
|
|
- tqdm: 进度条显示
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### 产品分析依赖
|
|
|
|
|
|
- asyncio: 异步编程
|
|
|
|
|
|
- playwright: 网页抓取
|
|
|
|
|
|
- PySide6: GUI界面(仅用于查看器)
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
## 日志文件
|
|
|
|
|
|
|
|
|
|
|
|
系统会生成以下日志文件:
|
|
|
|
|
|
- **tophub_scraper.log** - TopHub抓取日志
|
|
|
|
|
|
- **integrated_product_system.log** - 产品分析系统日志
|
|
|
|
|
|
- **process_temp_files.log** - 临时文件处理日志
|
|
|
|
|
|
- **cleanup_categories.log** - 分类清理日志
|
|
|
|
|
|
- **standardize_categories.log** - 分类标准化日志
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 分类标准
|
|
|
|
|
|
|
|
|
|
|
|
系统支持以下标准分类:
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
1. 科技 - 新质科技、互联网、人工智能等
|
|
|
|
|
|
2. 社会 - 社会新闻、生活服务、热点事件等
|
|
|
|
|
|
3. 体育 - 体育新闻、足球、篮球等
|
|
|
|
|
|
4. 历史 - 历史事件、历史人物、考古发现等
|
|
|
|
|
|
5. 安全 - 安全漏洞、网络安全、数据安全等
|
|
|
|
|
|
6. 军事 - 军事新闻、国防、武器装备等
|
|
|
|
|
|
7. 金融 - 金融新闻、市场分析、投资等
|
|
|
|
|
|
8. 购物 - 电商、购物、消费等
|
|
|
|
|
|
9. 游戏 - 游戏新闻、游戏开发、游戏测评等
|
|
|
|
|
|
10. 娱乐 - 娱乐八卦、音乐、影视等
|
|
|
|
|
|
11. 健康 - 健康医疗、健康生活、健身等
|
2025-11-09 17:20:44 +08:00
|
|
|
|
12. 其他 - 其他未分类内容
|
|
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
1. **Ollama服务**:确保本地Ollama服务已启动并可访问(默认端口11434)
|
|
|
|
|
|
2. **Chrome浏览器**:产品抓取功能需要已运行的Chrome浏览器实例(调试端口9222)
|
|
|
|
|
|
3. **临时文件格式**:TopHub抓取生成的临时文件格式为"YYYY年MM月DD日HHMMSS.txt"
|
|
|
|
|
|
4. **数据单元结构**:每个数据单元包含5行:节点ID、分类、标题、链接和分隔线
|
|
|
|
|
|
5. **数据库自动创建**:所有数据库文件会自动创建,无需手动创建
|
|
|
|
|
|
6. **依赖安装**:使用GUI查看器前,请安装依赖:`pip install -r requirements_gui.txt`
|
|
|
|
|
|
7. **过滤列表配置**:可通过编辑tophub_ban_column.txt文件配置需要过滤的栏目
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
## 示例
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### TopHub抓取临时文件示例
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
节点ID: 102
|
|
|
|
|
|
分类: 宽带山
|
|
|
|
|
|
标题: 女机器人
|
|
|
|
|
|
链接: http://club.kdslife.com/t_11502693.html
|
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
节点ID: 103
|
|
|
|
|
|
分类: 宽带山
|
|
|
|
|
|
标题: 这个应该属于底盘不行吗
|
|
|
|
|
|
链接: http://club.kdslife.com/t_11502686.html
|
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-05 18:11:59 +08:00
|
|
|
|
### 产品分析结果示例
|
2025-11-09 17:20:44 +08:00
|
|
|
|
|
|
|
|
|
|
```
|
2025-12-05 18:11:59 +08:00
|
|
|
|
产品 'AI Assistant' 分析完成
|
|
|
|
|
|
- 难度描述: 中等难度,需要一定的AI开发经验
|
|
|
|
|
|
- 难度分数: 60/100
|
|
|
|
|
|
- 关注数: 1500
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 数据库查看器界面
|
|
|
|
|
|
|
|
|
|
|
|
- 显示所有抓取数据,支持实时搜索和筛选
|
|
|
|
|
|
- 分类统计显示在顶部
|
|
|
|
|
|
- 点击链接可直接在浏览器中打开
|
|
|
|
|
|
- 右键菜单支持批量操作和评分调整
|