AI关键词导入与统计工具集

项目简介

用于管理 ai_article 数据库中百度关键词数据的导入、更新和统计导出。

环境依赖

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)

服务管理(推荐):

./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    # 实时日志

直接运行

python import_keywords.py

运行模式定频轮询默认每60秒轮询一次

工作流程

  1. 脚本启动后持续监控 query_upload/ 目录
  2. 发现Excel文件后自动处理
  3. 处理成功后自动删除源文件

Excel格式要求

  • 必须包含 query 列(关键词,不能为空)
  • 必须包含 科室 列(部门信息)

配置参数(在脚本头部修改):

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)

python update_keywords_from_excel.py

根据Excel更新已存在的关键词记录department、department_id、author_id、author_name

3. 导出统计 (export_author_stats.py)

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

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 查表获取 作者名称
Description
No description provided
Readme 47 KiB
Languages
Python 77%
Shell 23%