# 全功能产品抓取与分析系统 这是一个整合了产品抓取和AI分析功能的完整系统,将原来的 `integrated_scraper.py` 和 `product_ai_analysis.py` 合并为一个统一的系统。 ## 功能特性 ### 数据抓取功能 - 从tophub_data.db数据库中查询ProductHunt链接 - 使用playwright连接Chrome浏览器抓取产品信息 - 自动去重,避免重复抓取 - 支持批量抓取和进度显示 - 保存产品信息到products表 ### AI分析功能 - 调用Ollama AI API(qwen3: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. 基本使用(完整模式) ```bash # 运行完整工作流程(抓取+分析) python run_system.py --mode full # 或者使用主系统文件 python integrated_product_system.py ``` ### 2. 仅抓取模式 ```bash # 仅运行抓取功能 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. 仅分析模式 ```bash # 仅运行AI分析功能 python run_system.py --mode analysis # 限制分析数量 python run_system.py --mode analysis --max-products 100 ``` ### 4. 高级选项 ```bash # 指定数据库路径 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表(产品信息) ```sql 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分析结果) ```sql 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数据库 ## 依赖库 ```bash pip install loguru tqdm requests playwright ``` ## 运行步骤 1. **确保Chrome浏览器已运行并开启调试端口** ```bash # Windows chrome.exe --remote-debugging-port=9222 # macOS /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 ``` 2. **确保Ollama服务已运行** ```bash # 启动Ollama服务 ollama serve # 安装qwen3:8b模型(如果未安装) ollama pull qwen3:8b ``` 3. **确保tophub_data.db数据库存在** - 数据库应包含articles表,且有url字段 4. **运行系统** ```bash 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功能 - ✨ 添加统一的配置管理 - ✨ 提供简化的命令行界面 - ✨ 增强错误处理和日志记录 - ✨ 支持多种运行模式 ## 联系支持 如有问题,请查看日志文件获取详细信息,或检查系统配置是否正确。