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

这是一个整合了产品抓取和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功能
- ✨ 添加统一的配置管理
- ✨ 提供简化的命令行界面
- ✨ 增强错误处理和日志记录
- ✨ 支持多种运行模式

## 联系支持

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