Files
tophux_scrape/README.md

8.3 KiB
Raw Permalink Blame History

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数据抓取

python tophub_scraper.py

该脚本会:

  • 从tophub.today网站抓取数据
  • 根据过滤列表过滤内容可配置tophub_ban_column.txt
  • 将抓取数据保存为临时文件格式YYYY年MM月DD日HHMMSS.txt
  • 调用数据导入脚本处理抓取结果

2. ProductHunt产品抓取与分析

# 运行完整工作流程:抓取+分析+数据补充
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. 数据可视化查看

# 启动数据库查看器
python db_viewer.py

或使用启动脚本:

python run_viewer.py

查看器功能:

  • 显示数据库中的抓取数据
  • 支持关键词搜索和分类筛选
  • 实时分类统计显示
  • 支持链接点击在浏览器中打开
  • 支持批量删除和评分调整

4. 分类处理

# 处理临时文件
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相关任务

主要用途:

  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

数据库查看器界面

  • 显示所有抓取数据,支持实时搜索和筛选
  • 分类统计显示在顶部
  • 点击链接可直接在浏览器中打开
  • 右键菜单支持批量操作和评分调整