有需要本项目的代码、文档、完整资源或者需要部署调试的朋友可以私信博主。做这个系统的初衷很直接招聘网站上每天都会产生大量岗位信息但求职者真正想知道的并不只是某一个岗位招不招人而是不同城市的机会在哪里哪类公司给出的薪资更有竞争力学历、经验、技术关键词到底会怎样影响薪资水平。单靠人工浏览很难把这些信息串起来也很难形成一张可以辅助判断的就业市场地图。所以我把项目定位成一个“招聘数据采集、清洗、入库、分析、预测、管理”一体化系统。它不是单独画几张图也不是只跑一个模型而是把数据工程、Web系统、可视化大屏和机器学习预测结合到一个完整流程里。公开展示版保留系统功能、开发思路和运行效果涉及原始链接、账号、数据库记录、真实岗位明细等内容已经做了脱敏处理。图1系统整体处理链路示意一、项目整体定位把分散岗位信息变成可分析的就业画像计算机岗位本身变化快岗位名称也很“碎”前端开发、Java工程师、Python开发、数据分析、机器学习、人工智能工程师、测试、运维、嵌入式、算法、数据开发等方向都属于同一个大类但对应的城市分布、薪资空间和能力要求并不一样。这个系统围绕计算机相关岗位展开采集并整理了超过6万条岗位记录覆盖岗位名称、公司名称、薪资、城市、学历、经验、公司类型、公司规模、行业、任职要求、搜索关键词等多个字段。系统最终面向两类使用场景一类是普通用户通过可视化页面查看城市、公司、薪资、学历、经验、技能关键词等维度的统计结果也可以在预测模块中输入个人或岗位条件获得薪资估算参考另一类是管理员通过后台完成用户管理、数据维护、记录新增、编辑、删除和分页检索。前端界面强调直观交互后端则围绕数据处理和模型服务做支撑。技术栈上数据采集使用Python与Selenium数据处理使用Pandas结构化存储采用MySQLWeb服务由Flask搭建图表展示以ECharts和Pyecharts为主薪资预测采用CatBoost回归模型。这样组合的好处是上手成本可控模块边界清晰后续无论是扩展数据源、增加图表还是替换模型都比较方便。二、数据采集按城市和关键词拆分任务先保证数据可用数据采集阶段我没有把目标设定成“越复杂越好”而是先解决稳定获取和可追溯两个问题。系统按城市和关键词拆分采集任务每个关键词对应一个独立CSV文件采完一部分就可以立刻检查数据量和字段质量。这样即使某个关键词中断也不会影响其他数据文件后续整合时也能保留关键词来源。在页面采集上系统通过浏览器自动化方式处理动态加载页面并设置了等待、重试和异常跳转机制。对于尾页判断、页面为空、元素加载失败等情况程序会自动切换到下一个关键词或城市。公开展示时不展开具体登录、反爬处理和页面定位细节只保留采集流程和运行效果避免把可直接复用的采集逻辑完整暴露。图2数据采集与原始文件保存展示三、数据清洗薪资、城市、字段命名是重点原始招聘数据不能直接拿来分析最明显的问题就是格式不统一。比如薪资字段既有“15-25千·13薪”也有“8-12万/年”“200-300元/天”等不同写法城市字段有时带区县有时只有城市任职要求、行业类型、公司性质等字段还会出现缺失或混杂。清洗阶段的工作就是把这些“看起来像文本”的内容整理成可以统计和建模的结构化字段。薪资清洗是整个预处理里最关键的一步。我把不同单位统一换算为月薪口径同时提取薪资下限、薪资上限、薪资发放次数和月均薪资等字段方便后续做区间分析和预测评估。城市字段则按照市级维度进行归一避免同一城市因为新区、区县、开发区写法不同而被重复统计。字段命名也从中文列名映射成英文变量名便于数据库建表、后端接口和模型输入保持一致。清洗后的数据同时保留CSV和Excel格式。CSV更适合批量入库和程序读取Excel则方便人工抽查。这个步骤看起来不如大屏和模型“亮眼”但它决定了后面所有统计结果是否可信。如果薪资单位没有统一或者城市维度没有合并图表再漂亮也会出现偏差。图3数据清洗与字段标准化处理展示四、数据入库与系统结构让分析结果能够被系统持续调用完成清洗后岗位数据被导入MySQL集中管理。数据库部分不只是简单保存表格而是要考虑字段类型、主键、索引和后续查询效率。系统中的招聘数据表包含岗位、公司、经验、学历、行业、薪资、城市、关键词等字段用户表和管理员表分别服务于前台登录与后台权限控制。在Web层面Flask负责路由、接口、会话状态和后端逻辑。前端页面通过接口获取统计结果再交给ECharts渲染。用户访问可视化页面时不需要关心后台SQL如何执行只会看到可交互的图表管理员进入后台时可以通过表格组件完成检索、编辑和数据维护。这样的结构把数据层、服务层和展示层分开后期维护会更轻一些。系统也预留了继续扩展的空间。例如可以把采集任务做成定时任务把图表接口做成统一API把模型服务独立成单独模块甚至可以加入岗位推荐、简历关键词匹配和自动报告生成。当前版本已经完成从数据到应用的闭环后续升级主要是在数据源、模型解释和产品体验上继续打磨。图4数据库存储与核心关系结构展示五、多维可视化从城市、公司、学历经验到技能关键词可视化部分是这个系统最适合公开展示的内容。我把统计维度分成地点分析、公司分析、关键词分析、薪资分析、行业与岗位分析等几类每一类下面再拆成多个专题图表。用户既可以看整体大屏也可以进入单项图表查看更具体的分布。城市维度主要回答“机会在哪里”和“薪资差异在哪里”。系统统计不同城市的岗位数量、平均月薪、最高薪资以及区域地图分布。对于计算机岗位来说一线城市和产业聚集城市通常岗位数量更多薪资区间也更高但从求职角度看高薪并不等于一定适合还要结合生活成本、岗位数量、学历门槛和经验要求一起判断。图5地域分布、城市薪资与岗位需求展示关键词和技能维度主要回答“市场正在招什么”。系统对搜索关键词、岗位名称和任职要求进行统计并用柱状图、词云图等方式展示高频技术栈。Python、Java、前端、数据分析、机器学习、人工智能工程师等关键词在结果中出现频率较高说明当前计算机岗位对编程基础、数据处理能力和智能化方向能力都有持续需求。图6岗位关键词、技能要求与词云展示公司与学历经验维度更适合做职业规划参考。不同公司类型、公司规模、工作经验和学历要求对应的薪资差异并不完全一样。系统把这些因素拆开呈现可以帮助用户判断自己当前更适合投递哪类岗位也可以反过来提醒学习者如果想进入更高薪区间除了技术栈还要关注行业场景、项目经验和岗位层级。图7公司属性、经验学历与薪资关系展示六、可视化大屏把核心指标集中到一个页面除了普通图表页面我还做了一个深色主题的数据大屏把岗位总量、重点城市岗位数量、平均薪资、岗位词云、技能热度、学历分布、经验分布、地图等内容集中到一个页面。大屏的价值不只是“看起来炫”更重要的是把分散指标放在同一视图里方便快速把握整体市场结构。大屏采用左中右三栏布局中间展示核心词云和地图两侧放置柱状图、折线图、饼图等辅助指标。页面顶部保留关键统计数字图表支持动态渲染和轮询更新。公开版截图已经对顶部标题和部分明细做了弱化处理但仍然能看到整体布局、图表组合和交互风格。图8系统可视化大屏运行效果七、薪资预测把统计分析进一步变成可交互工具只做图表展示还不够所以系统加入了薪资预测模块。模型输入包括岗位名称、公司性质、工作经验、学历要求、所属行业、城市、搜索关键词、公司规模等特征输出为预测月薪并进一步换算年薪和薪资等级。这个功能适合用来做求职前的参考用户可以调整学历、经验、城市或岗位方向观察预测结果的变化。模型部分采用CatBoost回归算法。招聘数据里有大量类别型变量比如城市、学历、公司类型、行业、关键词等CatBoost对这类变量比较友好不需要做过于复杂的独热编码。训练完成后模型在测试集上的R²约为0.82平均绝对误差约为2400元。考虑到招聘薪资本身通常是区间值这个误差水平作为就业市场参考是可以接受的。在系统集成上训练好的模型被序列化保存Flask后端提供预测接口前端表单提交参数后即可返回结果。界面中保留了预测输入项、计算按钮、预测月薪和年薪展示。公开资源里不会展开完整训练参数和源码结构只展示模型思路、核心指标和上线效果。图9模型评估与薪资预测交互展示八、用户端从登录到图表浏览再到在线预测用户端的流程比较清晰先登录或注册账号然后进入主界面选择不同分析模块。左侧导航栏按照分析主题组织包括地点分析、公司分析、搜索关键词分析、薪资分析、行业与岗位分析、炫酷大屏和智能模型等入口。用户不需要理解数据库和模型只需要根据自己的关注点点击对应模块即可。预测模型入口做成表单交互用户可以选择岗位名称、公司名称、工作经验、学历要求、企业性质、公司规模、任职要求、所属行业、回复速度、薪资发放次数、工作城市、搜索关键词等条件。系统返回结果后页面以较直观的方式呈现预测数值适合用于毕业生求职前的薪资预期判断也适合做课程设计、毕业设计或项目作品集展示。图10用户端登录、注册、主界面与预测入口展示九、管理端用户管理和数据维护形成运营闭环管理端主要解决系统运营问题。管理员登录后可以查看后台概览包括数据总量、用户总量、系统负载、近期趋势等指标也可以进入用户管理页面查看注册用户、编辑账号信息、删除异常用户或调整权限。为了公开展示截图中的用户名、邮箱、电话、QQ、微信等内容已经脱敏。图11管理员后台概览与用户管理展示数据管理模块负责维护招聘记录。管理员可以按学历、所属行业、企业性质等条件检索数据也可以新增岗位记录、编辑已有记录或删除错误记录。表格支持分页显示避免一次加载过多数据影响体验。这个模块让系统不再只是静态展示页面而是具备了基本的数据运营能力。图12数据管理模块增删改查流程展示十、项目适合怎么继续扩展当前版本已经完成了从采集到展示、从图表到预测、从用户端到管理端的完整链路。继续往下做可以优先考虑五个方向第一加入多平台数据源把不同招聘平台的数据统一到同一套字段口径第二做定时更新和自动化任务调度让岗位数据持续刷新第三引入文本语义分析把岗位描述、任职要求和技能标签做得更细第四增加模型解释功能用特征贡献说明为什么某个岗位薪资更高第五面向求职者加入简历关键词匹配和岗位推荐。如果用于毕业设计或课程项目这套系统的完整度比较高既有数据采集和预处理又有数据库、Web前后端、可视化大屏、机器学习预测和后台管理。展示时可以从“数据从哪里来、怎么清洗、怎么入库、怎么展示、怎么预测、怎么管理”这条线讲清楚逻辑会比单纯介绍算法或单纯展示页面更完整。当然真正上线使用还需要进一步完善权限控制、参数化查询、日志审计、异常监控、数据合规说明和部署脚本。公开展示版已经对敏感信息做了处理完整资源更适合在可控环境下学习、复现和二次开发。从学习和复用角度看这套系统也适合拆成阶段性任务先完成岗位数据采集与字段清洗再完成数据库建表与接口封装随后接入统计图表和大屏最后把机器学习预测和后台管理补齐。按这个顺序推进既能看到阶段成果也能避免一开始就被完整系统的复杂度压住。每文一语真正能跑起来的项目往往不是靠某一个炫目的功能撑起来而是靠每一个扎实的环节一步一步连起来。