149 lines
3.7 KiB
Markdown
149 lines
3.7 KiB
Markdown
|
|
# TopHub数据处理系统
|
|||
|
|
|
|||
|
|
本项目用于处理TopHub网站抓取的临时文件,对数据进行分类并存储到SQLite数据库中。
|
|||
|
|
|
|||
|
|
## 功能特点
|
|||
|
|
|
|||
|
|
1. **文件解析**:读取临时文件(格式为"日期+时间.txt"),每5行作为一个数据单元
|
|||
|
|
2. **数据提取**:从每个数据单元中提取标题和链接
|
|||
|
|
3. **智能分类**:调用本地API(Ollama)对标题进行自动分类
|
|||
|
|
4. **去重处理**:检查标题+日期是否已存在于数据库中,避免重复录入
|
|||
|
|
5. **进度显示**:使用进度条显示处理进度
|
|||
|
|
6. **分类标准化**:将相似分类合并为标准分类
|
|||
|
|
|
|||
|
|
## 文件说明
|
|||
|
|
|
|||
|
|
### 核心脚本
|
|||
|
|
|
|||
|
|
1. **process_temp_files.py** - 主处理脚本
|
|||
|
|
- 解析临时文件
|
|||
|
|
- 调用API进行分类
|
|||
|
|
- 存储到数据库
|
|||
|
|
|
|||
|
|
2. **cleanup_categories.py** - 分类清理脚本
|
|||
|
|
- 清理分类中的特殊字符
|
|||
|
|
- 统一分类格式
|
|||
|
|
|
|||
|
|
3. **standardize_categories.py** - 分类标准化脚本
|
|||
|
|
- 将相似分类合并为标准分类
|
|||
|
|
- 提供分类映射规则
|
|||
|
|
|
|||
|
|
### 辅助脚本
|
|||
|
|
|
|||
|
|
1. **check_db.py** - 数据库结构检查脚本
|
|||
|
|
2. **test_api.py** - API测试脚本
|
|||
|
|
3. **view_categories.py** - 查看分类示例脚本
|
|||
|
|
|
|||
|
|
## 使用方法
|
|||
|
|
|
|||
|
|
### 1. 处理临时文件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python process_temp_files.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
该脚本会:
|
|||
|
|
- 扫描当前目录下的所有临时文件(格式为"日期+时间.txt")
|
|||
|
|
- 解析文件内容,提取标题和链接
|
|||
|
|
- 调用本地API对标题进行分类
|
|||
|
|
- 检查并避免重复数据
|
|||
|
|
- 存储到tophub_data.db数据库
|
|||
|
|
|
|||
|
|
### 2. 清理和标准化分类
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 清理分类中的特殊字符
|
|||
|
|
python cleanup_categories.py
|
|||
|
|
|
|||
|
|
# 标准化分类
|
|||
|
|
python standardize_categories.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 查看数据
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看分类示例
|
|||
|
|
python view_categories.py
|
|||
|
|
|
|||
|
|
# 检查数据库结构
|
|||
|
|
python check_db.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 数据库结构
|
|||
|
|
|
|||
|
|
数据库文件为`tophub_data.db`,包含以下表:
|
|||
|
|
|
|||
|
|
1. **tophub_entries** - 主数据表
|
|||
|
|
- id: 主键
|
|||
|
|
- text_content: 标题内容(非空)
|
|||
|
|
- link: 链接
|
|||
|
|
- category: 分类
|
|||
|
|
- scrape_time: 抓取时间
|
|||
|
|
|
|||
|
|
2. **classification_progress** - 分类进度表
|
|||
|
|
- id: 主键
|
|||
|
|
- total_count: 总数量
|
|||
|
|
- processed_count: 已处理数量
|
|||
|
|
- last_updated: 最后更新时间
|
|||
|
|
|
|||
|
|
## API配置
|
|||
|
|
|
|||
|
|
脚本使用本地Ollama API进行分类:
|
|||
|
|
- API地址:http://localhost:11434/api/generate
|
|||
|
|
- 模型:gemma3:4b
|
|||
|
|
- 请求格式:JSON
|
|||
|
|
|
|||
|
|
## 分类标准
|
|||
|
|
|
|||
|
|
系统支持以下标准分类:
|
|||
|
|
|
|||
|
|
1. 科技 - 新质科技、互联网等
|
|||
|
|
2. 社会 - 社会新闻、生活服务等
|
|||
|
|
3. 体育 - 体育新闻、足球等
|
|||
|
|
4. 历史 - 历史事件、历史人物等
|
|||
|
|
5. 安全 - 安全漏洞、安全科技等
|
|||
|
|
6. 军事 - 军事新闻、国防等
|
|||
|
|
7. 金融 - 金融新闻、市场分析等
|
|||
|
|
8. 购物 - 电商、购物等
|
|||
|
|
9. 游戏 - 游戏新闻等
|
|||
|
|
10. 娱乐 - 娱乐八卦、音乐等
|
|||
|
|
11. 健康 - 健康医疗、健康生活等
|
|||
|
|
12. 其他 - 其他未分类内容
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. 确保本地Ollama服务已启动并可访问
|
|||
|
|
2. 临时文件格式必须为"日期+时间.txt"
|
|||
|
|
3. 每个数据单元包含5行:节点ID、分类、标题、链接和分隔线
|
|||
|
|
4. 数据库文件会自动创建,无需手动创建
|
|||
|
|
|
|||
|
|
## 日志文件
|
|||
|
|
|
|||
|
|
系统会生成以下日志文件:
|
|||
|
|
- process_temp_files.log - 主处理日志
|
|||
|
|
- cleanup_categories.log - 分类清理日志
|
|||
|
|
- standardize_categories.log - 分类标准化日志
|
|||
|
|
|
|||
|
|
## 示例
|
|||
|
|
|
|||
|
|
### 临时文件格式示例
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
节点ID: 102
|
|||
|
|
分类: 宽带山
|
|||
|
|
标题: 女机器人
|
|||
|
|
链接: http://club.kdslife.com/t_11502693.html
|
|||
|
|
--------------------------------------------------
|
|||
|
|
节点ID: 103
|
|||
|
|
分类: 宽带山
|
|||
|
|
标题: 这个应该属于底盘不行吗
|
|||
|
|
链接: http://club.kdslife.com/t_11502686.html
|
|||
|
|
--------------------------------------------------
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 处理结果示例
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
标题 '女机器人' 分类为: 科技
|
|||
|
|
标题 '这个应该属于底盘不行吗' 分类为: 其他
|
|||
|
|
```
|