Files
tophux_scrape/product

全功能产品抓取与分析系统

这是一个整合了产品抓取和AI分析功能的完整系统将原来的 integrated_scraper.pyproduct_ai_analysis.py 合并为一个统一的系统。

功能特性

数据抓取功能

  • 从tophub_data.db数据库中查询ProductHunt链接
  • 使用playwright连接Chrome浏览器抓取产品信息
  • 自动去重,避免重复抓取
  • 支持批量抓取和进度显示
  • 保存产品信息到products表

AI分析功能

  • 调用Ollama AI APIqwen3:8b模型分析产品开发难度
  • 自动解析AI响应提取产品名称、简介和开发难度
  • 保存分析结果到product_analysis表
  • 支持断点续分析,避免重复分析
  • 自动延时保护避免API过载

系统特性

  • 统一的配置管理config.py
  • 完整的日志记录loguru
  • 进度条显示tqdm
  • 错误处理和重试机制
  • 模块化设计,易于扩展

文件结构

product/
├── integrated_product_system.py  # 主系统文件(核心功能)
├── run_system.py                 # 简化命令行界面
├── config.py                     # 配置文件
├── README.md                     # 使用说明
└── playwright-get-data.py        # playwright抓取模块依赖文件

使用方法

1. 基本使用(完整模式)

# 运行完整工作流程(抓取+分析)
python run_system.py --mode full

# 或者使用主系统文件
python integrated_product_system.py

2. 仅抓取模式

# 仅运行抓取功能
python run_system.py --mode scraping

# 指定抓取数量限制
python run_system.py --mode scraping --limit 50

# 不跳过重复URL
python run_system.py --mode scraping --no-skip-duplicates

3. 仅分析模式

# 仅运行AI分析功能
python run_system.py --mode analysis

# 限制分析数量
python run_system.py --mode analysis --max-products 100

4. 高级选项

# 指定数据库路径
python run_system.py --tophub-db /path/to/tophub_data.db --product-db /path/to/products.db

# 指定Chrome调试端口
python run_system.py --debug-port 9222

# 指定日志文件和级别
python run_system.py --log-file my_log.log --log-level DEBUG

# 指定特定URL进行抓取
python run_system.py --mode scraping --urls https://www.producthunt.com/posts/example-product

更新日志

v1.0.1 (当前版本)

  • 修复异步调用问题,支持在已有事件循环中运行
  • 优化错误处理和事件循环管理
  • 测试验证所有运行模式正常工作

v1.0.0

  • 合并integrated_scraper.py和product_ai_analysis.py功能
  • 添加统一的配置管理
  • 提供简化的命令行界面
  • 增强错误处理和日志记录
  • 支持多种运行模式

数据库结构

products表产品信息

CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    url TEXT NOT NULL UNIQUE,
    name TEXT,
    introduction TEXT,
    user_count TEXT,
    maker_link TEXT,
    maker_statement TEXT,
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL
);

product_analysis表AI分析结果

CREATE TABLE product_analysis (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    original_id INTEGER,
    original_name TEXT,
    product_name TEXT,
    product_intro TEXT,
    development_difficulty TEXT,
    difficulty_score INTEGER,
    ai_response TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (original_id) REFERENCES products (id)
);

配置说明

编辑 config.py 文件可以修改系统配置:

  • DATABASE_CONFIG: 数据库路径配置
  • CHROME_CONFIG: Chrome浏览器配置
  • AI_CONFIG: AI API配置Ollama
  • SCRAPING_CONFIG: 抓取配置
  • LOGGING_CONFIG: 日志配置
  • ANALYSIS_CONFIG: 分析配置

系统要求

  • Python 3.7+
  • Chrome浏览器已运行调试端口开启
  • Ollama服务已运行qwen3:8b模型已安装
  • SQLite数据库

依赖库

pip install loguru tqdm requests playwright

运行步骤

  1. 确保Chrome浏览器已运行并开启调试端口

    # Windows
    chrome.exe --remote-debugging-port=9222
    
    # macOS
    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
    
  2. 确保Ollama服务已运行

    # 启动Ollama服务
    ollama serve
    
    # 安装qwen3:8b模型如果未安装
    ollama pull qwen3:8b
    
  3. 确保tophub_data.db数据库存在

    • 数据库应包含articles表且有url字段
  4. 运行系统

    python run_system.py
    

常见问题

Q: 系统运行时提示Chrome连接失败

A: 确保Chrome浏览器已运行并开启了调试端口默认9222

Q: AI分析时提示API调用失败

A: 确保Ollama服务已运行且qwen3:8b模型已安装。

Q: 如何查看抓取和分析的进度?

A: 系统会自动显示进度条,同时也会在日志文件中记录详细信息。

Q: 如何只分析特定数量的产品?

A: 使用 --max-products 参数,例如:python run_system.py --max-products 50

Q: 如何重新分析已分析过的产品?

A: 系统默认会跳过已分析的产品如需重新分析请删除product_analysis表中对应记录。

更新日志

v1.0.0 (当前版本)

  • 合并integrated_scraper.py和product_ai_analysis.py功能
  • 添加统一的配置管理
  • 提供简化的命令行界面
  • 增强错误处理和日志记录
  • 支持多种运行模式

联系支持

如有问题,请查看日志文件获取详细信息,或检查系统配置是否正确。