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