今天你 AI 赋能了吗?打开浏览器,在地址栏输入 xuefulu.ai,按下 Enter 即可访问学府路1号!
2026年10月17日 星期六 12:32:20
常用网址:案例设计 | 案例导航 | 学府路1号 https://xuefulu.ai | 下载 WorkBuddy https://xuefulu.ai/WorkBuddy.html

一、案例背景与采集目标

招聘信息是就业市场最直接的体温计。一个专业值不值钱、哪个城市机会多、同一岗位在不同城市的薪资差多少,都能从公开的招聘信息里看出眉目。对经济统计、大数据方向的同学来说,这是一份和自己前途直接相关的数据。

这一篇的示范站点是 国家大学生就业服务平台 · 职位信息,入口网址 https://job.ncss.cn/student/jobs/index.html。它是教育部学生服务与素质发展中心运营的毕业生就业平台,面向高校毕业生免费开放,职位列表公开、无需登录、无验证码:岗位名称、单位名称、单位性质、单位规模、工作城市、学历要求、专业要求、招聘人数、薪资与发布时间,在列表页上一眼可见。

1.1 为什么挑这个站点

1.2 这个案例要拿到什么

1.3 站点结构速查(动手前先认识它)

部位长什么样我们从中取什么
职位列表页一行一条职位,按发布时间倒序排列,可以分页继续往后翻岗位名称、单位名称、工作城市、薪资文案、发布时间
岗位名后面的条件紧跟着学历要求、薪资与专业要求(如「本科及以上」「6-8K/月」「机械类 电气类」)学历要求、薪资文案、专业要求
单位信息段单位名称后面跟着单位性质与单位规模(如「民营企业 | 5000以上」)单位名称、单位性质、单位规模
招聘信息段「招聘 50 人」与发布时间、来源平台,末尾还挂着一串福利项招聘人数、发布时间、福利标签
筛选栏按行业、公司性质、地区、学历要求、薪资区间筛选只用来定位目标岗位,不作为数据来源

1.4 这个案例的难点在哪

难点具体表现对策
薪资写法不统一「5-20K/月」「6-8K/月」「面议」并存,区间跨度还差得远先把原始写法去重列出来,再定解析规则;面议单独标,不要取平均值
专业要求是一长串「机械类 电气类 材料类 车辆类 自动化类」按空格排开统一用「、」连接,另拆标签列便于统计
城市写法不统一有的写城市「上海」,有的写省份「山东」,也有「全国」照录原文,另设一列归到城市或省份;「全国」留空并备注
单位名称长、后缀多「中国软件与技术服务股份有限公司」「人本股份有限公司」并存保留页面原文,另建规范化列,不强行合并
岗位会反复发布同一家单位的同一岗位刷新后再次出现按「单位名称 + 岗位名称 + 工作城市」联合去重
先立三条规矩:只采集面向公众公开、无需登录的岗位信息;控制请求频率(每条之间留间隔,不并发轰炸);动手前先看目标网站的 robots.txt 与服务条款;招聘负责人的姓名、电话、邮箱、微信一律不采。这几条是红线,后面每个案例都会重复检查。

目标站点与交付产物

下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。

项目内容
示范站点国家大学生就业服务平台 · 职位信息
https://job.ncss.cn/student/jobs/index.html
教育部学生服务与素质发展中心运营,职位列表公开、无需登录、无验证码;岗位名称、学历、薪资、城市、专业、单位名称与性质、单位规模、招聘人数、发布时间、福利标签都在列表页上一眼可见(实测当日职位总数约 95 万条,列表按发布时间倒序、可分页)
延伸站点
  • 国聘网 · 岗位列表 https://www.iguopin.com/job(央企国企官方渠道,参考案例 21)
  • 校园就业信息网 http://jyw.gcut.edu.cn/(广州城市理工学院就业网,本地企业与进校宣讲信息最直接)
  • 实习僧 · 实习岗位列表 https://www.shixiseng.com/interns(实习/兼职岗位,与校招季互补)
  • 牛客网 · 校招岗位 https://www.nowcoder.com/jobs/school(职位列表现已需登录才能看全,课堂只讲字段结构与合规边界,不教绕过)
  • BOSS 直聘 · 职位搜索(数据分析 / 广州) https://www.zhipin.com/web/geek/job?query=数据分析&city=101280100(风控最严,仅作合规讨论)
  • 智联招聘 · 职位搜索(广州) https://sou.zhaopin.com/?jl=763&kw=数据分析(有登录墙与风控,只讲原理)
交付产物
  • 数据明细.xlsx(原始薪资文案 + 换算后数值并排)
  • 数据明细.html(按城市/学历筛选,薪资排序)
  • 数据看板.html(城市岗位数 + 薪资区间分布 + 学历结构)
  • 技能压缩包(岗位采集 + 薪资换算规则表 + 联合去重键)
难度★★☆ 中
合规提示只采集公开展示的岗位信息,严禁采集招聘联系人姓名、电话、邮箱、微信等个人信息;不得用于推销或其他骚扰用途。

二、数据源与字段设计

目标站点:国家大学生就业服务平台 · 职位信息,网址 https://job.ncss.cn/student/jobs/index.html。

项目内容
站点名称国家大学生就业服务平台 · 职位信息(教育部学生服务与素质发展中心)
入口网址https://job.ncss.cn/student/jobs/index.html(首页 https://www.ncss.cn/ 顶部导航「职位信息」也可到达)
页面形态与接口无需登录、无验证码;职位列表按页返回,岗位信息与单位信息都直接写在列表页上,不用再点进详情页
实际规模职位按发布时间倒序持续更新,可按行业、公司性质、地区、学历要求与薪资区间筛选,翻页可练批量采集
延伸站点国聘网 https://www.iguopin.com/job、校园就业信息网 https://jyw.gcut.edu.cn/、实习僧 https://www.shixiseng.com/interns;牛客网 https://www.nowcoder.com/jobs/school 现已需登录才能看全职位列表,课堂上只讲字段结构与合规边界,不教绕过

2.1 先定字段,再动手

很多人一上来就说「帮我把这个招聘网站的岗位爬下来」,结果拿回一张字段乱七八糟的表。正确顺序是:先把要哪些列想清楚、列成清单,再交给 WorkBuddy。

2.2 完整字段表(13 个字段)

下表就是本案例的验收标准。前 10 个来自页面原始数据,后 3 个是清洗与派生出来的分析字段。

字段名字段含义示例值口径与备注
岗位名称招聘岗位标题现场工程师(毕业三年内)照录岗位名,不删括注、不改写
单位名称用人单位全称人本股份有限公司保留页面原文,另建规范化列,不强行合并简称与全称
单位性质单位所有制类型民营企业照页面档位,归为 国有企业 / 民营企业 / 股份制企业 / 事业单位 等有限几档
单位规模单位人员规模5000以上照录页面写法(如 1-49 人 / 100-499 人 / 5000 以上)
工作城市工作所在地上海照录页面写法;有的写省份(如「山东」),「全国」留空并备注
学历要求学历门槛本科及以上统一成 不限 / 大专 / 本科及以上 / 硕士 / 博士 五档
专业要求岗位面向的专业机械类、电气类、材料类页面用空格分隔,统一用「、」连接,另拆标签列
招聘人数计划招聘人数50从「招聘 50 人」抽出数字;写成「招聘人数不限」的记为空值并备注,不填 0
薪资文案页面上的薪资写法6-8K/月原样保留,作为清洗依据
发布时间岗位发布或刷新日期2026-10-15列表按发布时间倒序排列,时效性强,必须有此列
月薪下限清洗后的月薪下限(元)6000「6-8K/月」→ 下限 6000;「K」按 1000 元计
月薪上限清洗后的月薪上限(元)8000「6-8K/月」→ 上限 8000,不要用区间平均值代替
福利标签单位给出的福利项五险一金、带薪年假、岗位晋升页面用「,」分隔,统一成「、」连接,便于做词频统计

2.3 薪资字段的解析规则(关键)

薪资是最容易出错的一列,必须在提示词里把规则写死。下面是按这个平台的真实写法定下的解析口径:

字段清单就是验收标准。采集做完,你就拿这张表逐列对照:列名对不对、每列内容像不像样、有没有整列是空的。

课程思政|数据安全与法治素养 · 岗位信息可以采,个人信息不能碰

招聘页面上常常能看到招聘负责人的姓名和电话,但这恰恰是最不该采的部分。个人信息受法律保护,采了、存了、传了,都可能构成侵权。数据工作者要养成的第一反应是:这一列我该不该要?答案是「不该」时,就别采。

AI 助手小贴士|薪资解析规则很难一次说全,先让 AI 把页面上的薪资写法「样本」去重列出来,你再逐条给规则,会高效很多。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先把职位列表里出现过的薪资文案原样列出来(去重后,按出现次数排序),先不要解析,我来逐条给解析规则。

三、零代码操作步骤

工具与技能|先看清三个角色,再动手

本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。

角色负责什么在本案例里具体做什么
你确认字段清单、验收结果、清洗与合规把关盯字段清单、核对结果、处理异常(如验证码)
WorkBuddy接中文指令:探字段 → 批量采 → 清洗 → 导出交付物拆解本篇的采集任务并跑完全量、产出交付物
浏览器技能
BrowserSkill
以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理打开校招岗位列表,确认岗位卡片字段与翻页

五步操作主线(全课程统一,每一篇都按这个顺序推进):

  1. 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
  2. 现场踩点(浏览器技能 BrowserSkill):打开 https://www.nowcoder.com/jobs/school,确认岗位卡片上能拿到哪些字段、有没有翻页。
  3. 小样试采(WorkBuddy):先采第一页 20 条,看字段齐不齐、薪资文案有没有被截断。
  4. 核对与清洗:① 薪资写法是不是都列出来确认了解析规则;② 城市列为空的记录有没有标注;③ 月薪下限、上限、折算年薪三列的口径写清了没有。
  5. 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
起手一句话(可直接复制):用浏览器技能 BrowserSkill 打开 https://job.ncss.cn/student/jobs/index.html(国家大学生就业服务平台 · 职位信息),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。

下面是在 WorkBuddy 里完成本案例的完整流程。全程不需要你写一行代码,但每一步都要动脑核对。

  1. 新建对话,粘贴下一节的「采集任务提示词」,网址就用 https://job.ncss.cn/student/jobs/index.html。
  2. 先采第一页做验证。看字段是不是都取到了,薪资文案有没有被截断,「招聘 50 人」这类写法有没有抽出数字。
  3. 先看薪资样本。让 AI 把去重后的薪资写法列出来,你据此确认或补充解析规则。
  4. 执行薪资清洗。要求生成月薪下限、月薪上限两列,并说明换算口径;「面议」一律留空。
  5. 拆专业与福利标签。说「把专业要求和福利标签里的内容拆成独立的标签列,重复的标签去重」。
  6. 继续翻页并联合去重。说「继续往后翻几页,最后按单位名称、岗位名称、工作城市三列联合去重,保留第一次出现的记录」。
  7. 做分组统计。说「按工作城市统计岗位数量并降序,再按薪资区间做一个分布统计」。
  8. 导出并归档。说「导出为 Excel,文件名 jobs_20261008.xlsx」。
翻页采集和去重要放一起做。先合并再统一去重,比一页一页去重要省事,也不容易漏。同一家单位在列表里常常挂着好几条岗位,更要靠「单位 + 岗位 + 城市」联合去重兜底。

四、提示词模板与追问技巧

下面这段可以直接复制。注意三个要点:网址写全、字段按编号列清、把薪资解析规则和「不采个人信息」交代死。

提示词
请帮我采集国家大学生就业服务平台的职位列表,做成一张岗位清单表。

【目标站点】https://job.ncss.cn/student/jobs/index.html
  这是教育部学生服务与素质发展中心的毕业生就业平台,职位列表公开、无需登录。
  列表按发布时间倒序排列,一行一条职位,可以分页继续往后翻;
  每条职位上有岗位名称、单位名称、单位性质、单位规模、工作城市、
  学历要求、专业要求、招聘人数、薪资、发布时间与福利标签。

【采集范围】先只采第 1 页做验证,我确认后再采前 5 页。

【需要字段】按这个顺序:
  1. 岗位名称(照录,不删括注、不改写)
  2. 单位名称(保留页面原文)
  3. 单位性质(国有企业 / 民营企业 / 股份制企业 / 事业单位 等,照页面档位)
  4. 单位规模(照录,如 1-49 人 / 5000 以上)
  5. 工作城市(照录;「全国」留空并备注)
  6. 学历要求(统一成 不限 / 大专 / 本科及以上 / 硕士 / 博士)
  7. 专业要求(页面用空格分隔,统一用「、」连接)
  8. 招聘人数(从「招聘 50 人」抽数字;「若干」留空)
  9. 薪资文案(照录,如 5-20K/月、6-8K/月、面议)
 10. 发布时间(格式 2026-10-15)
 11. 月薪下限(元,纯数字)
 12. 月薪上限(元,纯数字)
 13. 福利标签(页面用「,」分隔,统一成「、」连接)

【薪资解析规则】
  - 「6-8K/月」表示下限 6000、上限 8000,「K」按 1000 元计
  - 「5-20K/月」同理:下限 5000、上限 20000,不要用平均值代替区间
  - 「面议」:两项数值列一律留空并在备注里写「面议」,不要填 0
  - 「元/天」「元/小时」这类日薪、时薪单独备注折算口径,不混进月薪平均

【合规要求】
  - 只采列表页公开展示的字段;联系人、电话、邮箱、微信一律不要采集
  - 请求之间间隔 2 秒以上,不要并发
  - 按「单位名称 + 岗位名称 + 工作城市」三列联合去重,保留第一次出现的记录
  - 结果导出为 jobs_20261008.xlsx

4.1 三条常用追问指令

追问指令
追问一(薪资没算对):
「5-20K/月」这条的下限、上限不对,请按「K 按 1000 元」重算,
并把所有「面议」的记录两项数值留空,不要填 0。

追问二(去重):
请按「单位名称 + 岗位名称 + 工作城市」三列联合去重,
重复的只保留第一次出现的那条,并告诉我删掉了几条。

追问三(分组统计):
请按工作城市统计岗位数量并降序排列;再按 0-6K、6-9K、9-15K、15K 以上
四个区间统计岗位分布,用月薪下限来分档。
去重规则要说清「保留哪一条」。不说的话,AI 可能保留最后出现的、也可能保留薪资最低的,结果就不稳定。默认「保留第一次出现的」。

AI 助手小贴士|统计城市分布时,同一家单位可能在不同城市都有岗位,这属于正常现象,不要误当成重复项删掉。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请帮我确认:按单位+岗位+城市去重后,有没有把同一单位在不同城市的岗位误删?请抽查两家单位核对。

五、结果核对、清洗与保存

下面是采集到的结果样例(节选,2026-10-15 的真实职位数据,薪资已按 2.3 的规则数值化):

岗位名称单位名称单位性质工作城市学历要求专业要求薪资文案月薪下限月薪上限
商务助理山东纳蒂尔智能科技有限公司股份制企业山东本科及以上工商管理相关专业、自动化相关专业3-8K/月30008000
财务山东纳蒂尔智能科技有限公司股份制企业山东本科及以上财务、会计、审计5-20K/月500020000
现场工程师(毕业三年内)人本股份有限公司民营企业上海本科及以上机械类、电气类、材料类、车辆类、自动化类6-8K/月60008000
质量工程师(机械、材料、电气、车辆、自动化、仪器仪表等工科专业)人本股份有限公司民营企业上海本科及以上机械类、电气类、材料类、车辆类、自动化类6-9K/月60009000
中国银行股份有限公司 2027 年全球校园招聘公告中国银行股份有限公司国有企业北京本科及以上专业不限5-15K/月500015000

注意这几条里的两个细节:工作城市写的是「山东」而不是某个市,所以统计城市分布时要先把省份与城市分开处理;专业要求写「专业不限」的岗位,标签列要留空并备注,不能当成「缺失值」删掉——它本身就是一个有意义的取值。

5.1 五步清洗,一句话一条

清洗指令
① 去重:
   按「单位名称 + 岗位名称 + 工作城市」三列联合去重,保留第一次出现的记录。

② 薪资兜底:
   逐条检查薪资文案与两个数值列是否匹配;「面议」的必须为空,
   数值列出现 0 的记录单独列出来给我核对。

③ 档位统一:
   把学历要求统一成 不限 / 大专 / 本科及以上 / 硕士 / 博士 五档;
   把单位性质归成 国有企业 / 民营企业 / 股份制企业 / 事业单位 等有限几档。

④ 缺失标注:
   薪资为面议的、单位为「若干」人、城市写「全国」的,
   各自统计条数与占比,单独写进质量说明。

⑤ 分组统计:
   按工作城市统计岗位数并降序;按四个薪资区间统计岗位分布。

5.2 保存与归档

文件命名
jobs_20261008.xlsx        原始合并表(保留,不覆盖)
jobs_20261008_clean.xlsx  清洗版(去重 + 薪资数值化 + 档位统一)
jobs_stats_20261008.xlsx  统计附录:城市分布表、薪资区间分布表
jobs_20261008_log.txt     日志:页数、原始条数、去重后条数
把「原始条数」和「去重后条数」都记进日志,是很有价值的一步:同一家单位的同一岗位会反复刷新,一家单位也常挂着好几条岗位,如果去重删掉了近三分之一,说明重复发布普遍,后面的统计要特别小心。

AI 助手小贴士|城市分布做完后,可以让 AI 顺手算一个「城市 × 薪资区间」的交叉表,一眼就能看出哪个城市高薪岗位更集中。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请再做一个「城市 × 薪资区间」的交叉统计表,行是城市、列是薪资区间,格子里填岗位数量。

课程思政|工匠精神与严谨求实 · 把口径写进规则,而不是藏在脑子里

薪资怎么算、面议怎么处理、学历怎么分档——这些如果只在你脑子里,换个人来做结果就完全不一样。把它们写成一句话、写进提示词,数据才能被复核、被复现。严谨的职业习惯,就是让每一步都有据可循。

六、常见问题与合规红线

6.1 这个站点上最容易踩的五个坑

现象原因怎么处理
「面议」被算成了 0AI 把「没有数字」当成了数字 0;而页面上「面议」是一个真实的薪资档位要求面议的岗位两项数值列留空并在备注里写明,单独核对,绝不填 0
「招聘人数不限」被填成 0只认「招聘 N 人」这一种写法,遇到「不限」就顺手填了 0先看一遍这一列的原始写法,非数字的一律留空并备注
省份与城市混在一列有的写「山东」,有的写「上海」,有的写「全国」照录原文,另设一列判定是省份还是城市;「全国」留空并备注
去重后条数掉了一大半同一岗位反复刷新、一家单位挂多条岗位,或去重列选得太宽按「单位名称 + 岗位名称 + 工作城市」联合去重,并确认没把不同城市的岗位误删
岗位名带了长长的括注如「质量工程师(机械、材料、电气、车辆、自动化、仪器仪表等工科专业)」照录不删;另设一列做规范化简称,不要为了好看把原文改短

6.2 三条合规红线(每个案例都要过一遍)

  1. 不采个人信息。只采岗位卡片公开展示的字段,招聘负责人的电话、姓名、邮箱、微信一律不采、不存、不导出。
  2. 控制频率与范围。只采与自己分析目的相关的那几页,不要整站抓取,不要在高峰时段反复请求。
  3. 不用于商业用途。结果仅用于课程学习与统计分析,不对外转售、不二次发布原始数据。
遇到网站明确反爬(验证码、封 IP、法律声明)时,正确做法是停下来换数据源,而不是想办法绕过。本课的考核标准是「合规地拿到能用的数据」,不是「攻破某个网站」。

课程思政|诚信与职业操守 · 数据不能为了好看而修饰

清洗薪资时,最诱人的错误就是把「面议」填成 0 或随手填个平均数,因为这样表格「看着完整」。但数据工作的操守恰恰在于:宁可留下空白并说明,也不为了让结果好看而编造。一个诚实的空值,远胜一个漂亮的假数。

七、随堂自测(10 题)

点击选项即可判分,答错的题会立刻显示解析。

已答 0 / 10 · 正确 0 —

1采集招聘信息时,下面哪一类字段是明确不应该采集的?

  • A. 岗位名称
  • B. 工作城市
  • C. 招聘负责人的手机号
  • D. 学历要求
答案:C。联系电话属于个人隐私信息,即便页面上可见也不应采集、存储或导出。

2薪资文案是「6-9K」,清洗后月薪下限和上限应该是?

  • A. 6000 和 9000
  • B. 6 和 9
  • C. 600 和 900
  • D. 无法确定,只能留空
答案:A。「K」按 1000 元计算,6K 即 6000 元、9K 即 9000 元。

3「面议」这一条,三项薪资数值列应该怎么填?

  • A. 全部填 0
  • B. 全部留空,并在备注里写「面议」
  • C. 填该岗位的平均薪资
  • D. 删掉这条记录
答案:B。面议不等于 0,填 0 会严重拉低薪资均值;留空并备注才准确。

4「6-9K·13薪」的折算年薪,本案例采用的口径是?

  • A. 只取下限 6000 × 12
  • B. 取上限 9000 × 12
  • C. 只取(6000+9000)之和
  • D. 取下限与上限的中值 7500 × 13
答案:D。「·13薪」表示一年发 13 个月,折算时用月薪中值乘月数,口径要在规则里写明。

5翻页后发现同一岗位重复出现,最可靠的去重依据是?

  • A. 公司名称 + 岗位名称 + 工作城市 三列联合
  • B. 薪资相同
  • C. 岗位名称相同
  • D. 页面上出现的顺序
答案:A。单看岗位名称会误删不同公司的同类岗位,联合三列才能准确定位同一条招聘。

6把「应届毕业生」「1-3 年」这类经验要求统一处理,最好的做法是?

  • A. 删掉这一列
  • B. 换算成具体天数
  • C. 统一成有限几个档位(如 应届 / 1-3 年 / 3-5 年)
  • D. 保留原文不做处理
答案:C。分档便于统计比较;保留原文更精细,两者可以并存,但至少要有一个可比较的口径。

7采集校招岗位时,符合本课要求的做法是?

  • A. 把平台上的岗位库一次性全抓下来
  • B. 只采与分析目的相关的几页,控制频率
  • C. 采集招聘负责人的电话用于课程分析
  • D. 把采集到的数据转卖出去
答案:B。范围与频率都要克制,个人信息不采,数据不商用不外传。

8统计城市分布时,同一家公司在两个城市都有岗位,应该?

  • A. 当成重复数据删掉一个
  • B. 只保留总部所在城市那个
  • C. 合并成一条
  • D. 两个都保留,因为这是两条不同的招聘
答案:D。不同城市的岗位是两条独立记录,去重依据里有「城市」一列,正是为了避免误删。

9为什么建议把「原始条数」和「去重后条数」都记进日志?

  • A. 便于判断重复发布的程度,提醒后续统计注意
  • B. 日志看起来更长
  • C. 方便给老师看
  • D. 这是网站的硬性要求
答案:A。去重前后的差异反映了数据质量,是后续分析时必须知道的背景信息。

10采集过程中突然持续返回错误或要求验证码,正确的做法是?

  • A. 换用更快的采集方式硬冲
  • B. 记录情况并停止,加大间隔或直接换数据源
  • C. 反复重试直到成功
  • D. 换成别人的账号继续
答案:B。遇到风控应立刻停下,这是合规要求也是技术要求;硬冲既违规又无效。