73 lines
3.2 KiB
Markdown
73 lines
3.2 KiB
Markdown
## 情报收集系统设计
|
|
|
|
### 程序框架
|
|
```angular2html
|
|
intelligence_system/
|
|
├── config/ # 配置管理
|
|
│ ├── __init__.py
|
|
│ ├── settings.py # 全局参数
|
|
│ └── logging.conf # 日志配置
|
|
├── collectors/ # 数据采集
|
|
│ ├── news_api.py
|
|
│ └── complaint_spider.py
|
|
├── processors/ # 数据处理
|
|
│ ├── text_processor.py
|
|
│ └── image_processor.py
|
|
├── storage/ # 数据存储
|
|
│ ├── database.py
|
|
│ └── cache_manager.py
|
|
├── applications/ # 应用层
|
|
│ ├── reporter/
|
|
│ │ ├── daily.py
|
|
│ │ └── monthly.py
|
|
│ └── alert.py
|
|
├── utils/ # 工具类
|
|
│ ├── logger.py
|
|
│ └── network.py
|
|
└── main.py # 调度入口
|
|
```
|
|
### 程序设计原则
|
|
1. 所有程序尽可能在py文件中运行,尽量避免使用命令行执行
|
|
2. 配置需要在配置类中定义
|
|
3. 密钥等信息直接放在配置类中
|
|
|
|
### 主程序设计
|
|
主程序需要一次启动,一直运行,启动时运行一次(在代码中可取消),之后每天定时生成一次报告
|
|
|
|
主程序包含爬虫/api调度器。该调度器通过查询mysql中任务调度情况按需执行,db文件中应包含任务名称、
|
|
任务路径、任务执行频率(支持按天、按周,按分钟)、上次执行时间、下次执行时间等信息
|
|
|
|
主程序应包含数据处理调度器,根据数据类别分别处理,如文本数据处理调度器、图片数据处理调度器等,
|
|
每天定时拉取db获取到的原始数据,分别进行处理,处理完成后将结果保存到mysql中
|
|
|
|
主程序应包含日报、周报等生成,根据时间定时生成报告
|
|
|
|
### 日志设计
|
|
日志系统应兼容多个平台,如win、mac和linux,日志需要保存为log文件,并且在日志大于20mb时自动压缩
|
|
|
|
### 数据库链接设计
|
|
数据存储放在数据库中,数据库类型为mysql,数据库名称为intelligence_system
|
|
|
|
数据库表的命名规则与目录一致,数据采集类以collector_为开头,数据处理类以processor_为开头,数据存储类以storage_为开头,应用层类以application_为开头
|
|
依次类推。
|
|
|
|
数据库链接为通用配置,要求数据采集或处理类等,可以直接调用封装好的数据库链接,不必每次都重新些,
|
|
该链接包含表的增删改查功能,以及执行sql语句功能
|
|
|
|
数据库结构:
|
|
1. collector_news_api:新闻api数据表
|
|
2. collector_complaint_spider:投诉数据表
|
|
3. processor_text_processor:文本处理数据表
|
|
4. processor_image_processor:图片处理数据表
|
|
5. main_task 任务调度表
|
|
6. application_reporter_daily:日报数据表
|
|
7. application_reporter_monthly:周报数据表
|
|
|
|
### 数据采集设计
|
|
每一个数据采集均为独立python文件,里面执行主程序均为main,以方便调度
|
|
每一个数据采集均会根据规则创建数据库表,数据处理类以processor_为开头
|
|
|
|
### 数据处理
|
|
从多个数据库库表中获取数据,对数据进行处理,处理完成后将结果保存到数据库中,处理结果可能存储在多个表中
|
|
数据处理数据库表以processor_为开头
|