一个 Python 爬虫 + AI Skill 的实践:让 Claude Code 和龙虾 OpenClaw 帮你盯着学校官网,再也不怕错过重要通知。

痛点

学校的通知分散在多个部门网站上——研究生院、教务处、学生工作处、创新创业学院、国资处……每个网站的页面结构不同,有些还加了反爬。手动逐个检查既费时又容易遗漏。

能不能让 AI 帮我每天看一眼?

方案

写一个 Python 脚本 njust_monitor.py,一次性抓取 14 个网站最近 3 天的通知,输出标准 JSON。然后把它注册为 AI Agent 的 Skill——无论是 Claude Code 还是龙虾 OpenClaw,输入 /njust 就能看到结果。

用户输入: /njust

AI输出 :

教务处

  • 2025-2026春季学期网络通识教育选修课学习通知 (2026-03-17) 链接

研究生院-首页通知公告

  • 关于做好2026年春季学期课程安排的通知 (2026-03-16) 链接

监控范围

共覆盖 14 个页面,涵盖学校主要职能部门:

# 来源 域名 引擎
1 学校主页-通知公告 www.njust.edu.cn DrissionPage
2-9 研究生院(通知/活动/培养/招生/学位/管理/导师/国际交流) gs.njust.edu.cn requests
10 学生工作处 dgxg.njust.edu.cn DrissionPage
11 创新创业学院 eoe.njust.edu.cn DrissionPage
12 国资处 gzc.njust.edu.cn DrissionPage
13 教务处 jwc.njust.edu.cn DrissionPage
14 知识产权学院 dicm.njust.edu.cn DrissionPage

依赖安装

pip install requests beautifulsoup4 DrissionPage

部署为Skill

这个脚本可以注册到两个 AI Agent 平台,各有优劣:

方式一:Claude Code 全局命令

目录结构:

**注:**在windows下,~/ 目录就是 C:\Users\用户名\,所有的/都替换为\

~/.claude/
└── commands/
    └── njust.md        # Skill 定义
└── my-scripts/
    └── njust_monitor.py`       # 脚本文件

脚本放在 ~/.claude/my-scripts/njust_monitor.py 或项目目录下均可。

njust.md 内容:

---
description: 监控南京理工大学各网站最近3天的通知公告
---

运行以下命令获取南京理工大学14个网站最近3天内发布的通知:

python -X utf8 C:\Users\ADMIN\.claude\my-scripts\njust_monitor.py

脚本 stdout 输出 JSON 数组,每条通知包含 title、url、date、source 字段。
请执行脚本,然后将结果按 source(来源)分组展示。

使用时在 Claude Code 中输入 /njust 即可。Claude 会执行脚本、解析 JSON、按来源分组渲染成 Markdown。

使用:
在这里插入图片描述

方式二:龙虾 OpenClaw Skill

目录结构:

~/.openclaw/workspace/skills/njust-notification-monitor/
├── SKILL.md                # Skill 元数据 + 使用说明
└── scripts/
    └── njust_monitor.py    # 爬虫脚本

OpenClaw 的 Skill 系统会自动发现 SKILL.md,注册为可调用的技能。

使用:

接入飞书,并在HEARTBEAT.md 或者 cron 中设置定时任务:
在这里插入图片描述

也可在飞书中直接发送 /njust
在这里插入图片描述

方式三:直接运行 python njust_monitor.py

添加监控网站

1、打开claude(在njust_monitor.py统一目录下)或者openclaw

2、发送指令:把这个网站也加入监控https://dgxg.njust.edu.cn/_t615/6509/list.htm
在这里插入图片描述

依赖安装

pip install requests beautifulsoup4 DrissionPage

局限与改进方向

  • 速度:DrissionPage 需要启动浏览器,6 个反爬站点串行访问约需 30-40 秒。后续可考虑并发或复用 session。
  • 稳定性:学校网站偶尔改版会导致解析器失效,需要定期维护 CSS 选择器。
  • 覆盖范围:目前只覆盖了 14 个页面,后续可按需添加更多学院和部门。
  • 定时推送:目前是按需触发,可以结合 cron 或 OpenClaw 心跳任务实现每日自动推送。

技术架构

双引擎爬虫

并非所有网站都能简单 requests.get() 拿到内容。南理工部分站点(主页、教务处、学生工作处等)部署了反爬机制,普通请求只会得到一个空壳页面。

因此脚本采用双引擎策略

引擎 适用场景 技术栈
requests 纯 HTML 页面(研究生院 8 个子站) requests + BeautifulSoup
DrissionPage 反爬页面(主页、教务处等 6 个站点) Chromium 无头浏览器

DrissionPage 会启动一个真实的 Chromium 浏览器实例,模拟用户访问行为(访问 → 等待 → 刷新 → 提取),绕过前端反爬脚本。

四种页面解析器

不同网站的 HTML 结构各异,脚本内置了 4 种解析器自动匹配:

PARSERS = {
    "news_ul":      parse_news_ul,       # ul.news_ul li > a + span (研究生院)
    "news_list":    parse_news_list,      # ul.news_list > div.xbtt-2 (学校主页)
    "article_list": parse_article_list,   # li.list_item > Article_Title (学工处/国资处)
    "table":        parse_table,          # table tr > td a[title] (教务处/知产院)
}

输出格式

脚本 stdout 输出标准 JSON 数组,每条通知包含 4 个字段:

[
  {
    "title": "关于开展2026届本科毕业设计中期检查的通知",
    "url": "https://jwc.njust.edu.cn/82/69/c1217a361065/page.htm",
    "date": "2026-03-12",
    "source": "教务处"
  }
]

这种设计让脚本与展示层完全解耦——AI Agent 负责读取 JSON 并按来源分组渲染,脚本只管抓数据。

总结

这个项目的核心思路是:把重复的信息检索工作封装成脚本,再通过 AI Skill 机制让它「一句话可调用」。同一个 njust_monitor.py 脚本,既能在 Claude Code 里用 /njust 调用,也能在龙虾 OpenClaw 里作为 Skill 使用。

脚本负责抓数据,AI 负责展示——各干各的活,干净利落。

获取:

通过网盘分享的文件:njust-notification.zip
链接: https://pan.baidu.com/s/1cX16lWh9XfV1ek8cGzrRtw?pwd=p1q6
提取码: p1q6
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐