Files
tophux_scrape/product/README.md
2025-11-28 22:29:47 +08:00

213 lines
5.6 KiB
Markdown
Raw 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.
# 全功能产品抓取与分析系统
这是一个整合了产品抓取和AI分析功能的完整系统将原来的 `integrated_scraper.py``product_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. 基本使用(完整模式)
```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功能
- ✨ 添加统一的配置管理
- ✨ 提供简化的命令行界面
- ✨ 增强错误处理和日志记录
- ✨ 支持多种运行模式
## 联系支持
如有问题,请查看日志文件获取详细信息,或检查系统配置是否正确。