Files
tophux_scrape/README.md

287 lines
8.3 KiB
Markdown
Raw Permalink 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.
# TopHub数据处理与产品分析系统
本项目包含两个核心功能模块:
1. TopHub网站数据抓取与处理系统
2. ProductHunt产品抓取与AI分析系统
## 功能特点
### TopHub数据抓取与处理
- **网站抓取**从tophub.today网站抓取数据支持节点ID范围遍历
- **智能过滤**:根据过滤列表自动跳过指定栏目内容
- **数据存储**将抓取数据保存到SQLite数据库
- **分类处理**调用本地API进行智能分类
- **去重处理**:避免重复数据录入
- **分类标准化**:相似分类自动合并
### ProductHunt产品分析
- **产品抓取**从ProductHunt抓取产品详细信息
- **AI分析**调用Ollama API分析产品开发难度
- **数据管理**:完整的产品数据库管理
- **关注数转换**:将文本形式的关注数转换为数字
- **难度评分**:自动计算产品开发难度分数
- **缺失数据补充**:自动补全缺失的产品链接和评分
### 数据可视化
- **GUI查看器**使用PySide6构建的可视化数据查看器
- **搜索筛选**:支持关键词搜索和分类筛选
- **分类统计**:实时显示分类统计信息
- **数据操作**:支持批量删除、标记感兴趣和评分调整
## 文件说明
### 核心脚本
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** - 临时文件处理脚本
- 解析临时文件
- 调用API进行分类
- 存储到数据库
2. **cleanup_categories.py** - 分类清理脚本
- 清理分类中的特殊字符
- 统一分类格式
3. **standardize_categories.py** - 分类标准化脚本
- 将相似分类合并为标准分类
- 提供分类映射规则
4. **run_viewer.py** - 数据库查看器启动脚本
- 检查依赖包
- 启动SQLite数据库查看器
5. **check_db.py** - 数据库结构检查脚本
6. **test_api.py** - API测试脚本
7. **view_categories.py** - 查看分类示例脚本
## 使用方法
### 1. TopHub数据抓取
```bash
python tophub_scraper.py
```
该脚本会:
- 从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
```
或使用启动脚本:
```bash
python run_viewer.py
```
查看器功能:
- 显示数据库中的抓取数据
- 支持关键词搜索和分类筛选
- 实时分类统计显示
- 支持链接点击在浏览器中打开
- 支持批量删除和评分调整
### 4. 分类处理
```bash
# 处理临时文件
python process_temp_files.py
# 清理分类中的特殊字符
python cleanup_categories.py
# 标准化分类
python standardize_categories.py
```
## 数据库结构
### 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: 创建时间
## API配置
项目使用本地Ollama API进行AI相关任务
- **API地址**http://localhost:11434/api/generate
- **模型**qwen3:8b
- **请求格式**JSON
主要用途:
1. **TopHub数据分类**:对抓取的标题进行智能分类
2. **产品开发难度分析**分析ProductHunt产品的开发难度
3. **用户关注数转换**:将文本形式的关注数转换为数字
4. **难度评分计算**:自动计算产品开发难度分数
## 核心依赖
### 基础依赖
- requests: HTTP请求处理
- sqlite3: 数据库操作
- loguru: 日志记录
- tqdm: 进度条显示
### 产品分析依赖
- asyncio: 异步编程
- playwright: 网页抓取
- PySide6: GUI界面仅用于查看器
## 日志文件
系统会生成以下日志文件:
- **tophub_scraper.log** - TopHub抓取日志
- **integrated_product_system.log** - 产品分析系统日志
- **process_temp_files.log** - 临时文件处理日志
- **cleanup_categories.log** - 分类清理日志
- **standardize_categories.log** - 分类标准化日志
## 分类标准
系统支持以下标准分类:
1. 科技 - 新质科技、互联网、人工智能等
2. 社会 - 社会新闻、生活服务、热点事件等
3. 体育 - 体育新闻、足球、篮球等
4. 历史 - 历史事件、历史人物、考古发现等
5. 安全 - 安全漏洞、网络安全、数据安全等
6. 军事 - 军事新闻、国防、武器装备等
7. 金融 - 金融新闻、市场分析、投资等
8. 购物 - 电商、购物、消费等
9. 游戏 - 游戏新闻、游戏开发、游戏测评等
10. 娱乐 - 娱乐八卦、音乐、影视等
11. 健康 - 健康医疗、健康生活、健身等
12. 其他 - 其他未分类内容
## 注意事项
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文件配置需要过滤的栏目
## 示例
### TopHub抓取临时文件示例
```
节点ID: 102
分类: 宽带山
标题: 女机器人
链接: http://club.kdslife.com/t_11502693.html
--------------------------------------------------
节点ID: 103
分类: 宽带山
标题: 这个应该属于底盘不行吗
链接: http://club.kdslife.com/t_11502686.html
--------------------------------------------------
```
### 产品分析结果示例
```
产品 'AI Assistant' 分析完成
- 难度描述: 中等难度需要一定的AI开发经验
- 难度分数: 60/100
- 关注数: 1500
```
### 数据库查看器界面
- 显示所有抓取数据,支持实时搜索和筛选
- 分类统计显示在顶部
- 点击链接可直接在浏览器中打开
- 右键菜单支持批量操作和评分调整