Initial commit: 百家号文章采集系统

This commit is contained in:
sjk
2025-12-19 22:48:58 +08:00
commit 0d5bbb1864
37 changed files with 11774 additions and 0 deletions

211
QUEUE_USAGE.md Normal file
View File

@@ -0,0 +1,211 @@
# 任务队列功能使用说明
## 📋 功能概述
新增了任务队列系统,支持**离线处理**、**进度跟踪**和**结果汇总导出**。
## 🚀 启动服务
```bash
# 开发环境
python app.py
# 生产环境(推荐)
bash start.sh
```
启动时会自动:
- ✅ 创建必要的目录data/, data/results/
- ✅ 启动后台任务处理器
- ✅ 自动处理队列中的任务
## 💡 使用方式
### 方式1即时导出原有功能
1. 填写百家号URL和参数
2. 点击**"即时导出"**按钮
3. 同步等待处理完成
4. 立即下载结果
**适用场景:** 需要立即获取结果
---
### 方式2队列处理新功能
1. 填写百家号URL和参数
2. 点击**"添加到队列"**按钮
3. 任务加入队列,后台慢慢处理
4. 可以继续添加其他任务
5. 在"任务队列"页面查看进度
6. 完成后下载结果
**适用场景:**
- 批量处理多个账号
- 不需要立即获取结果
- 避免长时间等待阻塞
## 📊 任务队列管理页面
点击顶部的**"任务队列"**按钮进入管理页面,可以:
### 1. 查看统计信息
- 总任务数
- 等待中任务数
- 处理中任务数
- 已完成任务数
- 失败任务数
### 2. 筛选任务
- 全部任务
- 等待中
- 处理中
- 已完成
- 失败
### 3. 查看任务详情
每个任务显示:
- 百家号URL
- 任务状态
- 处理进度0-100%
- 当前步骤说明
- 时间范围
- 创建时间
- 文章总数
- 是否使用代理
### 4. 下载结果
- 已完成的任务显示"下载结果"按钮
- 点击即可下载Excel文件
### 5. 自动刷新
- 页面每5秒自动刷新一次
- 实时查看最新进度
## 🗂️ 数据存储
### 任务队列文件
```
data/task_queue.json
```
存储所有任务的状态、进度、配置等信息
### 导出结果文件
```
data/results/百家号文章_{app_id}_{timestamp}.xlsx
```
每个任务的Excel结果文件
## 📝 任务处理流程
```
用户添加任务
加入队列pending
后台处理器检测到任务
标记为处理中processing
步骤1: 解析URL获取UK (10%)
步骤2: 初始化爬虫 (20%)
步骤3: 获取文章列表 (30%)
步骤4: 处理文章数据 (50%-90%)
步骤5: 生成Excel文件 (90%)
标记为已完成completed
用户下载结果
```
## 🔄 任务状态说明
| 状态 | 说明 | 颜色标识 |
|------|------|---------|
| pending | 等待处理 | 黄色 |
| processing | 正在处理 | 蓝色 |
| completed | 处理完成 | 绿色 |
| failed | 处理失败 | 红色 |
## ⚙️ 技术特性
### 1. 离线处理
- ✅ 添加任务后无需等待
- ✅ 后台自动处理
- ✅ 支持批量添加
### 2. 进度跟踪
- ✅ 实时显示进度百分比
- ✅ 显示当前处理步骤
- ✅ 显示已处理文章数
### 3. 错误处理
- ✅ 失败任务显示错误信息
- ✅ 代理失败自动切换IP
- ✅ 反爬检测自动重试
### 4. 数据持久化
- ✅ 任务状态保存到本地JSON
- ✅ 服务重启后继续处理
- ✅ 结果文件永久保存
### 5. 用户隔离
- ✅ 每个用户只能看到自己的任务
- ✅ 统计信息按用户过滤
- ✅ 下载权限校验
## 🎯 最佳实践
1. **大批量采集**
- 使用"添加到队列"
- 一次性添加多个账号
- 让系统慢慢处理
2. **紧急需求**
- 使用"即时导出"
- 实时获取结果
3. **代理配置**
- 默认启用代理IP池
- 系统自动处理反爬
- 检测到反爬立即切换IP
4. **定期清理**
- 系统会保留7天内的已完成任务
- 可手动删除旧任务(功能可扩展)
## 🐛 常见问题
**Q: 任务一直处于"等待中"状态?**
A: 检查后台处理器是否启动,查看控制台日志
**Q: 任务失败了怎么办?**
A: 查看失败原因,修改参数后重新添加任务
**Q: 可以同时处理多少个任务?**
A: 目前每次处理1个任务按队列顺序依次处理
**Q: 结果文件在哪里?**
A: `data/results/` 目录下文件名包含app_id和时间戳
## 🔧 开发说明
### 核心文件
- `task_queue.py` - 任务队列管理
- `task_worker.py` - 后台处理器
- `templates/queue.html` - 队列管理页面
- `data/task_queue.json` - 任务数据存储
### API接口
- `POST /api/queue/add` - 添加任务
- `GET /api/queue/tasks` - 获取任务列表
- `GET /api/queue/task/<id>` - 获取任务详情
- `GET /api/queue/stats` - 获取统计信息
- `GET /api/queue/download/<id>` - 下载结果
---
**享受高效的批量处理!** 🎉