# AI关键词导入与统计工具集 ## 项目简介 用于管理 `ai_article` 数据库中百度关键词数据的导入、更新和统计导出。 ## 环境依赖 ```bash pip install pandas pymysql openpyxl ``` ## 文件说明 | 文件 | 功能 | |------|------| | `database_config.py` | 数据库配置与连接管理 | | `import_keywords.py` | 定频轮询导入关键词到baidu_keyword表 | | `start_import_keywords.sh` | 服务管理脚本(启动/停止/重启/状态) | | `update_keywords_from_excel.py` | 根据Excel更新已有关键词记录 | | `export_author_stats.py` | 导出作者发文统计到CSV | ## 目录结构 ``` ai_import_quary/ ├── database_config.py # 数据库配置 ├── import_keywords.py # 关键词导入脚本(定频轮询) ├── start_import_keywords.sh # 服务管理脚本 ├── update_keywords_from_excel.py # 关键词更新脚本 ├── export_author_stats.py # 统计导出脚本 ├── query_upload/ # Excel导入文件存放目录 └── exports/ # CSV导出文件存放目录 ``` ## 数据库表关系 ``` ai_departments (科室表) │ id → department_id ▼ ai_authors (作者表) │ id → author_id ▼ baidu_keyword (关键词表) │ keyword ▼ ai_articles (文章表) ``` ## 使用方法 ### 1. 导入关键词 (import_keywords.py) **服务管理**(推荐): ```bash ./start_import_keywords.sh start # 启动服务 ./start_import_keywords.sh stop # 停止服务 ./start_import_keywords.sh restart # 重启服务 ./start_import_keywords.sh status # 查看状态 ./start_import_keywords.sh logs # 查看日志 ./start_import_keywords.sh logs-follow # 实时日志 ``` **直接运行**: ```bash python import_keywords.py ``` **运行模式**:定频轮询(默认每60秒轮询一次) **工作流程**: 1. 脚本启动后持续监控 `query_upload/` 目录 2. 发现Excel文件后自动处理 3. 处理成功后自动删除源文件 **Excel格式要求**: - 必须包含 `query` 列(关键词,不能为空) - 必须包含 `科室` 列(部门信息) **配置参数**(在脚本头部修改): ```python POLL_INTERVAL = 60 # 轮询间隔(秒) UPLOAD_FOLDER = 'query_upload' # 监控目录 SEED_ID = 9999 # 固定值 SEED_NAME = '手动提交' # 固定值 CRAWLED = 1 # 固定值 ``` **流程图**: ``` ┌─────────────────┐ │ 定频轮询启动 │ └────────┬────────┘ ▼ ┌─────────────────┐ │ 读取Excel │ │ (query+科室) │ └────────┬────────┘ ▼ ┌─────────────────┐ │ 查询科室 │ │ ai_departments │ │ → department_id│ └────────┬────────┘ ▼ ┌─────────────────┐ │ 指定科室 │ │ 获取author信息 │ │ ai_authors │ │ → author_id │ │ → author_name │ └────────┬────────┘ ▼ ┌─────────────────┐ │ 判重 │ │ keyword不能重复 │ └────────┬────────┘ │ ┌────┴────┐ │ │ 重复 不重复 │ │ ▼ ▼ ┌──────┐ ┌───────────────────────┐ │ 跳过 │ │ INSERT baidu_keyword │ └──────┘ │ ┌───────────────────┐ │ │ │ keyword = query值 │ │ │ │ crawled = 1 │ │ │ │ seed_id = 9999 │ │ │ │ seed_name = 手动提交│ │ │ │ department = 科室 │ │ │ │ department_id = x │ │ │ │ author_id = 随机 │ │ │ │ author_name = 随机│ │ │ │ query_status = │ │ │ │ manual_review │ │ │ └───────────────────┘ │ └───────────────────────┘ ``` ### 2. 更新关键词 (update_keywords_from_excel.py) ```bash python update_keywords_from_excel.py ``` 根据Excel更新已存在的关键词记录(department、department_id、author_id、author_name)。 ### 3. 导出统计 (export_author_stats.py) ```bash python export_author_stats.py python export_author_stats.py --date 2026-01-28 ``` **参数**: - `--date`: 目标日期,默认当天 - `--output-dir`: 输出目录,默认 `./exports` **输出文件**: - `author_review_stats_{date}.csv` - 发文审核统计(所有状态) - `author_published_stats_{date}.csv` - 发文成功统计(published状态) ## 数据库配置 默认配置在 `database_config.py`: ```python DB_CONFIG = { 'host': '8.149.233.36', 'user': 'ai_article_read', 'password': '***', 'database': 'ai_article', 'charset': 'utf8mb4' } ``` ## 导入记录字段说明 `baidu_keyword` 表插入字段: | 字段 | 值 | 说明 | |------|-----|------| | keyword | Excel中query列 | 关键词 | | seed_id | 9999 | 种子ID | | seed_name | 手动提交 | 种子名称 | | crawled | 1 | 已爬取标记 | | parents_id | 0 | 父级ID | | department | Excel中科室列 | 科室名称 | | department_id | 查表获取 | 科室ID | | query_status | manual_review | 查询状态 | | author_id | 查表获取 | 作者ID | | author_name | 查表获取 | 作者名称 |