Enhance manual crawling functionality in GXGPMonitorApp to skip database saving for both announcements and filtered results. Update logging to reflect manual crawl mode actions, ensuring clarity in the process. Adjusted comments for better understanding of the manual crawling logic.

This commit is contained in:
2026-01-08 19:12:37 +08:00
parent 04d254cfef
commit 85cd7e9d3e
10 changed files with 1115 additions and 6 deletions
+161
View File
@@ -0,0 +1,161 @@
# 定时爬取脚本使用说明
## 脚本功能
`cron_crawl.py` 是一个用于定时爬取广西政府采购网公告的脚本,具有以下功能:
- ✅ 从 `gx_gp_monitor/config/config.yaml` 读取关键词配置
- ✅ 爬取最新的公告(数据库中没有的)
- ✅ 自动筛选匹配关键词的公告
- ✅ 将筛选结果保存到数据库
- ✅ 以卡片形式发送企业微信通知
## 文件结构
```
project/
├── venv/ # Python虚拟环境
├── gx_gp_monitor/
│ ├── cron_crawl.py # 定时爬取主脚本
│ └── config/config.yaml # 配置文件
├── run_cron_crawl.sh # 启动脚本(自动激活虚拟环境)
├── CRON_README.md # 使用说明
└── cron_example.txt # crontab配置示例
```
## 使用方法
### 1. 使用启动脚本(推荐)
```bash
# 在项目根目录下运行
./run_cron_crawl.sh
```
### 2. 直接运行Python脚本
```bash
cd gx_gp_monitor
python cron_crawl.py
```
### 3. 使用crontab定时运行
在Ubuntu系统上设置定时任务:
```bash
# 编辑crontab
crontab -e
# 添加定时任务(例如:每小时执行一次)
0 * * * * cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1
# 或者每30分钟执行一次
*/30 * * * * cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1
# 或者每天早上9点执行
0 9 * * * cd /home/v6ole/pyproject/GX-gp-notify && ./run_cron_crawl.sh >> /home/v6ole/pyproject/GX-gp-notify/logs/cron.log 2>&1
```
**注意**: 脚本会自动激活项目中的虚拟环境(`venv`目录),无需手动处理虚拟环境。
### 3. 脚本输出示例
```
=== 定时爬取任务完成 ===
总共爬取: 1300 条公告
新增公告: 5 条
关键词筛选: 2 条
保存到数据库: 2 条
企业微信通知: 成功
```
## 配置说明
### 关键词配置
`gx_gp_monitor/config/config.yaml` 中配置关键词:
```yaml
crawler:
keyword: ["大化", "信息化"] # 支持多个关键词
```
### 企业微信配置
确保企业微信配置正确:
```yaml
wechat_app:
enabled: true # 必须启用
corp_id: "your_corp_id"
agent_id: "your_agent_id"
secret: "your_secret"
```
### 数据库配置
确保数据库配置正确:
```yaml
database:
enabled: true # 必须启用
host: "your_db_host"
port: 5432
name: "your_db_name"
user: "your_db_user"
password: "your_db_password"
```
## 日志查看
脚本运行日志保存在 `logs/gx_gp_monitor.log`,crontab输出日志保存在您配置的文件中。
```bash
# 查看最新日志
tail -f logs/gx_gp_monitor.log
# 查看crontab日志
tail -f /home/v6ole/pyproject/GX-gp-notify/logs/cron.log
```
## 注意事项
1. **权限设置**:确保脚本有执行权限
```bash
chmod +x cron_crawl.py
```
2. **Python环境**:确保Python环境和依赖已正确安装
```bash
pip install -r gx_gp_monitor/requirements.txt
```
3. **路径配置**:crontab中的路径必须是绝对路径
4. **时区设置**:确保系统时区设置正确,影响定时任务执行时间
5. **资源消耗**:爬取过程中会消耗一定的CPU和网络资源,建议在非高峰期运行
## 故障排除
### 脚本无法运行
- 检查Python环境和依赖
- 检查配置文件路径
- 检查数据库连接
### 企业微信通知失败
- 检查企业微信配置
- 检查网络连接
- 查看企业微信应用权限
### 数据库连接失败
- 检查数据库配置
- 检查数据库服务状态
- 检查网络连接
### crontab不执行
- 检查crontab语法
- 检查脚本路径
- 检查用户权限
- 查看系统日志:`sudo grep CRON /var/log/syslog`