Files
bzg_skills/SKILL.md
2026-03-09 22:03:09 +08:00

236 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: "policy-regulations-retrieval"
description: "Automates Chinese tax policy retrieval with scheduled tasks, web scraping, content filtering, file downloading, and data deduplication. Invoke when user needs to build a policy/regulation collection system or wants automated policy monitoring."
---
# 政策法规检索与整理系统
这是一个自动化政策法规检索与整理系统,可用于从中国税务相关部门网站自动抓取、筛选、下载和整理政策法规文件。
## 功能特性
1. **定时任务功能** - 支持配置每日自动执行检索任务
2. **网站内容爬取** - 自动访问税务相关部门网站获取最新政策
3. **内容筛选** - 智能识别包含关键词(最新、通知、公告、政策、法规)的内容
4. **资料下载** - 支持下载PDF、Word、TXT等多种格式文件
5. **数据处理** - 去重、分类整理、自动生成汇总报告
## 使用方法
### 基本命令
```bash
# 初始化系统配置
python policy_retrieval.py init
# 立即执行一次检索(默认发送邮件报告)
python policy_retrieval.py run
# 立即执行一次检索,不发送邮件
python policy_retrieval.py run --no-email
# 指定收件人执行检索
python policy_retrieval.py run -e user@example.com -e another@example.com
# 启动定时任务服务
python policy_retrieval.py schedule --time "09:00"
# 查看检索结果
python policy_retrieval.py report
# 查看帮助
python policy_retrieval.py --help
```
### 配置文件 (config.yaml)
```yaml
# 定时任务配置
scheduler:
enabled: true
time: "09:00" # 每日执行时间
days: ["mon", "tue", "wed", "thu", "fri"] # 执行日期
# 目标网站配置
targets:
- name: "国家税务总局"
url: "https://www.chinatax.gov.cn/"
keywords: ["最新", "通知", "公告", "政策", "法规"]
- name: "财政部"
url: "https://www.mof.gov.cn/"
keywords: ["最新", "通知", "公告", "政策", "法规"]
- name: "科技部"
url: "https://www.most.gov.cn/"
keywords: ["科技", "创新", "项目", "申报", "通知", "公告", "政策"]
# 下载配置
download:
path: "./downloads"
formats: ["pdf", "doc", "docx", "txt"]
max_size: 50MB
check_disk_space: true # 下载前检查磁盘空间
min_disk_space: 100MB # 最小剩余空间要求
verify_download: true # 验证下载文件完整性
# 反爬策略配置
anti_crawler:
enabled: true
user_agents:
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0"
- "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
request_interval: 3 # 请求间隔(秒)
timeout: 30 # 请求超时(秒)
retry_times: 3 # 重试次数
retry_delay: 5 # 重试间隔(秒)
# 代理池配置
proxy:
enabled: false
pool: [] # 代理列表,格式: ["http://user:pass@host:port", ...]
rotate: true # 是否轮换代理
# 日志配置
logging:
enabled: true
level: "INFO" # DEBUG, INFO, WARNING, ERROR
path: "./logs"
max_size: 10MB # 单个日志文件最大大小
backup_count: 5 # 保留日志文件数量
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
# 告警通知配置
notification:
enabled: true # 启用通知功能
on_failure: true # 任务失败时通知
on_success: true # 任务成功时通知(发送检索报告)
email:
enabled: true
smtp_host: "smtp.qq.com" # QQ邮箱示例
smtp_port: 587
smtp_user: "your_email@qq.com"
smtp_password: "your_auth_code" # QQ邮箱需要使用授权码
from_addr: "your_email@qq.com"
to_addrs:
- "user@example.com"
- "admin@example.com"
dingtalk:
enabled: false
webhook: "https://oapi.dingtalk.com/robot/send?access_token=xxx"
webhook:
enabled: false
url: "https://your-webhook-url.com/notify"
# 去重配置
deduplication:
title_similarity: 0.8
content_similarity: 0.9
# 分类配置
categories:
- name: "税收政策"
keywords: ["税收", "税务", "纳税"]
- name: "通知公告"
keywords: ["通知", "公告"]
- name: "法规文件"
keywords: ["法规", "条例", "规章"]
```
## 核心模块说明
### 1. 定时任务模块 (scheduler.py)
- 使用APScheduler实现定时任务
- 支持自定义执行时间和频率
- 可配置工作日/休息日
- **持久化存储**使用SQLite数据库存储任务状态程序重启后任务不丢失
- **支持cron表达式**高级用户可使用cron格式自定义执行规则
### 2. 网页爬取模块 (scraper.py)
- 支持多网站并发爬取
- 智能解析HTML/XML内容
- **反爬策略**
- User-Agent轮换随机选取
- 请求间隔控制默认3秒可配置
- 请求超时设置默认30秒
- 自动重试机制默认3次
- **代理池支持**:可配置代理列表,自动轮换
- **错误处理**
- 网络异常自动重试
- 解析失败记录日志并跳过
- 请求超时处理
### 3. 内容筛选模块 (filter.py)
- 关键词匹配算法
- 相关度评分系统
- 可配置筛选规则
### 4. 文件下载模块 (downloader.py)
- 支持多种文件格式
- 断点续传功能
- 自动重命名和分类
- **文件完整性校验**:下载完成后校验文件大小和完整性
- **磁盘空间检查**:下载前检查剩余空间
### 5. 数据处理模块 (processor.py)
- 基于SimHash的去重算法
- 多维度分类(时间、类型、部门)
- Excel/CSV报告生成
- **数据库存储**使用SQLite存储结构化数据支持查询和统计
### 6. 日志模块 (logger.py)
- **结构化日志**JSON格式日志便于分析
- **日志轮转**:按大小和时间自动轮转,防止日志文件过大
- **执行记录**:记录每次任务执行的开始时间、结束时间、结果统计
- **错误追踪**:详细的错误堆栈信息,便于问题排查
### 7. 通知模块 (notifier.py)
- **多通道通知**支持邮件、钉钉、Webhook
- **失败告警**:任务执行失败时自动发送通知
- **可配置开关**:可单独控制成功/失败通知
## 输出结果
系统会在以下目录生成文件:
### output 目录
- `summary_YYYYMMDD.xlsx` - 每日汇总表格
- `deduplicated_data.json` - 去重后的数据
- `category_*/` - 按类别分类的文件
- `policies.db` - SQLite数据库结构化存储
### logs 目录
- `app_YYYYMMDD.log` - 应用日志
- `execution_YYYYMMDD.json` - 执行记录JSON格式
### downloads 目录
- 按类别分类的政策文件
- 文件名格式:`{日期}_{来源}_{标题}`
## 示例输出表格
| 标题 | 发布时间 | 来源 | 类别 | 摘要 | 下载链接 |
|------|----------|------|------|------|----------|
| 关于实施新的组合式税费支持政策的通知 | 2024-01-01 | 国家税务总局 | 税收政策 | ... | /downloads/xxx.pdf |
## 依赖安装
```bash
pip install -r requirements.txt
```
主要依赖:
- requests - HTTP请求
- beautifulsoup4 - HTML解析
- apscheduler - 定时任务
- pandas - 数据处理
- openpyxl - Excel导出
- sqlalchemy - 数据库ORM
- python-dotenv - 环境变量管理
- pytz - 时区处理
- selenium/playwright - 动态页面爬取(可选)
可选依赖(通知功能):
- smtplib - 邮件发送(标准库)
- requests - 钉钉/Webhook通知