石家庄市教育局官网最新消息抓取 (sjzjyj-news-capture)
抓取 http://sjzjyj.sjz.gov.cn/(石家庄市教育局)的最新消息,产出结构化文章 + 汇总索引 + zip 压缩包。
何时触发
- 用户要"抓取/采集/订阅/汇总"该网站的最新消息、新闻、通知公告;
- 用户给出该站链接并要求"生成压缩包/最新信息";
- 用户想定时监控该站更新。
核心脚本
scripts/fetch_sjzjyj_news.py —— 纯 Python 标准库实现,无需安装第三方依赖,直接运行:
python scripts/fetch_sjzjyj_news.py # 默认抓 新闻中心 + 通知公告 各 1 页(最新)
python scripts/fetch_sjzjyj_news.py --pages 3 # 各栏目抓 3 页
python scripts/fetch_sjzjyj_news.py --max 30 # 最多 30 篇
python scripts/fetch_sjzjyj_news.py --out 输出目录 # 指定输出目录
python scripts/fetch_sjzjyj_news.py --columns "http://sjzjyj.sjz.gov.cn/a/xwzx/sjxw/index.html" # 自定义栏目
站点结构与抓取逻辑(重要)
- 栏目列表页(可扩展):
- 新闻中心:
/a/xwzx/index.html(子栏目:媒体聚焦 mtjj、区县新闻 qxxw、市级新闻 sjxw、图片新闻 tpxw、校园新闻 xyxw) - 通知公告:
/a/zwgk/tzgg/index.html - 文章链接格式:
/a/YYYY/MM/DD/时间戳.html - 分页:站点用
POST /dynamic/PageFront.jsp(表单字段parseId/categoryId/pageNo),脚本已自动处理。 - 详情页字段(正则抽取):
- 标题:
<div class="sjxwfenyecont_title"> - 日期/来源/责任编辑:
<div class="fangwenliang">(格式日期:… 来源:… 责任编辑:…) - 正文:
<div class="content_fenye2">…</div>(以<div class="fanye">为结束标记) - 反爬:站点对无 UA 的请求返回 403,脚本已内置浏览器 User-Agent + Referer。
产出结构
<输出目录>/
├── 00_README.txt ← 抓取说明
├── 索引_最新消息.md ← 汇总索引(Markdown)
├── 索引_最新消息.csv ← 汇总索引(Excel 可打开)
├── manifest.json ← 结构化清单(机器可读)
├── 新闻中心/<日期>_<标题>.md
└── 通知公告/<日期>_<标题>.md
脚本会自动把整个目录打包为 <输出目录>.zip。
执行流程
- 运行脚本(可先
--max 10试跑); - 脚本输出末尾打印
ZIP=…(压缩包路径)、OUTDIR=…(目录)、TOTAL=…(篇数); - 用
present_files把 zip 与索引 md 展示给用户。
注意事项
- 若某篇正文为空,通常是纯附件/图片类公告,脚本会在 md 中标注"正文为空或需附件查看"。
- 若网站改版导致正则失效,优先检查详情页的
sjxwfenyecont_title/fangwenliang/content_fenye2三个 class 是否变更。