信IB与电腐
China Computer&Communication 软件卄域;与惑用
2021年第5期
基于Python的就业趋势可视化分析系统
刘•—■王跟成
(西藏民族大学信息工程学院,陕西咸阳712082)
摘要:近年来,网上的招聘信息日益繁杂,为了方便求职者做出就业选择,笔者设计了一个基于Python的就业趋势可视化分析系统.该系统能够对51job网站的所有数据进行爬取、统计和整理,进而得出每个行业每周的岗位数量、薪资分布、地区分布等数据特征,统一建模后存储在MySQL数据库中,再通过Django框架读取数据,最后用echarts可视化库直观地按周、按月反映各个行业的岗位数字特征和变化趋势,能够加深就业者对整个行业的认识.
关键词:Python;爬虫;可视化
中图分类号:TP391.41文献标识码:A文章编号:1003-9767(2021)05-099-03
Visualization Analysis System of Employment Trend Based on Python
LIU Yi,WANG Gencheng
(College of Information Engineering,Xizang Minzu University,Xianyang Shaanxi712082,China) Abstract:In recent years,online recruitment information has become more and more complicated.In order to facil让ate job seekers to make employment choices,the author designed a Python-based visualization analysis system for employment trends.The system can crawl,count and organize all the data of the51j ob website,and then obtain the number of jobs,salary distribution,regional distribution and other data characteristics of each industry every week,and store them in the MySQL database after unified modeling, and then pass The Django framework reads the data,and finally uses the echarts visualization library to intuitively reflect the digital characteristics and changing trends of various industries on a weekly and monthly basis,which can deepen employees x understanding of the entire industry.
Keywords:Python;crawler;visualization
0引言
近年来,随着高校的招生规模不断扩大,每年面临工作的毕业生也越来越多,面对网上日益复杂的就业信息,如果能够直观地看出各个行业的岗位特征和变化趋势,将有利于学生们做出选择[I'4]o本文建立了一个可更新、可管理、可维护的系统,通过一段时间的数据积累,可以呈现出近一年的招聘数据变化规律,为毕业生客观判断岗位薪资变化趋势提供参考。
1相关技术
1.1爬虫
网络爬虫是一个计算机程序或脚本,可根据一定的规则自动抓取互联网信息。本文采用聚焦爬虫针对性地抓取相关网络资源,并有选择地访问互联网上的网页和相关链接。聚焦爬虫主要用于获取特定主题目标的数据资源。
1.2MySQL
MySQL是一个由瑞典公司开发的关系型数据库管理系统,在Web应用方面是最好的RDBMS应用软件之一。相较于将所有数据都存放在一个大的仓库里,MySQL是一种将数据保存在不同表中的关联型数据库管理系统,具有体积小、速度快、持有成本低和开放源码的特点[5'7]o
1.3Django
Django是一个高水准的Python编程语言驱动的开源模型,由Python写成,起源于开源社区o Django是由视图、模型、控制器3部分组成的Web程序框架,使用这种架构可以方便
基金项目:国家自然基金项目“西藏畜牧业领域大数据融合关键技术研究”(项目编号:61762082)。
作者简介:刘一(1994—),男,陕西彬州人,硕士研究生。研究方向:网络空间安全。
王跟成(1976-),男,陕西泾阳人,硕士研究生,副教授。研究方向:网络空间安全和计算机软件与理论。
信Q 与电1B
China  Computer  & Communication
敬件打茨与窓用
2021年第5期
创作者们轻松创建高质量、可维护的数据库驱动应用程序。1.4 Echarts
Echarts 是由百度公司开发的纯Javascript 开源图表库,
支持折线图、柱状图、散点图、地理坐标图、K 线图、雷达 图、盒须图、热力图、关系图、路径图和树图等37类图表。 这些图表还附带标题、图例、时间轴、气泡等可交互组件,
可以支持多图表、组件的搭配和组合。
2系统的概要设计
2.1数据采集
首先选取某个具有代表性的招聘信息网站,观察该网站 的招聘信息分布页面,到该页面的服务器网址和请求信息,
然后再出该页面内所需信息的xpath 路径,应用网络爬虫 技术自动从招聘网站服务器获取网页文件,最后通过lxml 和
xpath 提取所需要的信息,完成数据收集。具体过程如图1所示。
图1内容爬取流程
2.2数据存储
以51job 招聘网站为例,本文决定从网页前端的需求出
发精简要处理的数据量,只在数据库中存储前端需要的数据。 通过定义全局变量和全局数组记录可视化所需要的数据属
性,可以在用爬虫爬取网站招聘信息的过程中根据招聘数据
的特性进行记录和存储,用完后随时丢弃数据,解决了内存 占用过多和数据分析量过于庞大的难题。
根据前端页面的需求分析,需要呈现的岗位信息共计有
61个,而展现每个岗位所需要的数据有70个,可以在数据
库中用一张61x70的数据表存放数据,从而可以方便前端 页面按行数调用某特定岗位的数据信息,按列数区分该岗位
的各个数字特征。从数据管理和分析的角度考虑,笔者为61
个岗位的数据信息存储创建各自的子表,每个子表用于记录 该岗位每次采集和整理的数据特性信息,作为总表的历史记 录。这样用navicat 数据库管理软件进行管理时可以更加直观 地对各个数据表进行增加、删除、修改和查询等操作。
2.3数据可视化
从可视化分析的需求出发,本文设计的系统计划呈现 出近4周的岗位数量变化情况、近12月的岗位数量变化规
律、薪资占比以及在全国各省的分布情况。在前端网页中进 行合理布局,网站选用Python 的Django 框架,服务器选用
Django 自带的服务器,根据数据的逻辑结构选择用11个下
拉菜单代表11个行业,并将每个行业下拉菜单的内容设置成
该行业目录下的岗位。在下拉菜单中完成选择并提交时,网 页会向服务器提交信息表单,后台会根据所提交表单的内容
从MySQL 总表中对应的一行提取整行的数据,然后传入前 端网页的图表代码中,完成数据的可视化呈现。
3系统功能实现
3.1数据来源
本系统选取51job 前程无忧网站的招聘信息作为分析对
象,在招聘信息分类的总目录下到行业和岗位的分类。一
共有11个行业,所有行业的目录下共计有61个岗位,而每 个岗位则有2000 ~ 5000页招聘信息,每页有20条招聘数据。
python大数据就业前景
例如,第一个计算机软件岗位有5000页,每页有20条招聘 信息,共计10万条信息,以此保证能够获得足够的数据量。
3.2提取网页内容
首先通过浏览器分析网页的请求信息,然后用爬虫程序 向该网站发送请求获得网页的html 代码,用Python 的lxml  库进行解析,再到职位信息和下一页链接的xpath 路径,
并将它们提取出来,最后用链接获取下一页的内容,依次循 环。图2为用谷歌浏览器获得的网页请求信息。
Request  URL: js . 51jobcdn . cofli/in/js/2016/t
80605
Request  Method: GET
Status  Code: * 200 OK  (from  memory  cache)Remote  Address: 119.188.115.11:443
Referrer  Policy: strict-origin-when-origin ▼ Response  Headers Accept-Ranges: bytes
Cache-Control: max-age=7200^0
Connection: keep*alive Content-Encoding: gzip
图2获取网页请求信息
3.3定义数据特征
根据前端页面要展示的信息内容,在程序中将采集日期、 采集数据总量、近4个周岗位数量变化、近12个月以来每
个月数据的增量、近12个月以来每个月的数据量级、薪资
占比以及各省份的岗位数量,按照规定的顺序进行排序,用
信IB与电腐
China Computer&Communication 软件卄域;与惑用
2021年第5期
于后续获取数据时记录数据特征。
3.4识别特征
使用字符匹配定义用于识别岗位信息、薪资和地点的函数,观察从网页中提取出来的代表某个岗位特征属性的字符串,根据前几位字符串的特征划分特征类别O
3.5数据更新
为了在前端用柱状图和折线图展示近几周的岗位数量变化、近几月的数据量以及数据增量变化,必须及时更新数据。更新数据的方式也分成跨月更新和跨周更新,跨周更新除了要更新地图中每个省份的岗位数目、饼状图中各个薪资阶层的岗位数目之外,还要将柱状图中的每周数据集体前移一周,再更新本周的数据。而跨月更新操作除了要执行跨周更新的操作之外,还要将折线图中的月增量折线和月总量折线的数据集体前移一月,然后更新本月增量数据和本月总量数据。3.6数据存储
对于一个岗位来说,可以将收集并处理好的岗位数据信息按照规定的顺序存在MySQL数据库中。一个岗位数据需要存储的数据信息共有70个,包括序号、采集日期、采集总量等。针对所有岗位的数据信息,本系统采用总表和子表的格式存放数据,并使用navicat数据库管理软件进行管理,在navicat管理界面中总表共61行,每一行存放一种岗位的最新采集信息,方便前端页面按行提取并调用。并且每一个岗位都有各自的分表,用于存放总表的历史记录。
3.7数据展现
系统前端网页采用Python的Django框架,数据的图表选用的是echarts的图表模板,服务器为pycharm自带的服务器。网站页面分为首页和详情页,首页将11个行业共计61个岗位内容做成下拉菜单,在下拉菜单中选择要查看的岗位名称可以跳转到详情页,详情页根据提交的表单从MySQL 数据库中查询数
据。详情页共有4个图表,分别是每周岗位数量柱状图、每月岗位数量和数量新增折线图、薪资分布饼状图和地区分布的中国地图,用后台传入的数据分别呈现出其数字特性。近4周的岗位数量变化情况如图3所示,近12月的岗位数量变化规律如图4所示,薪资占比如图5所示。
90500
90000
图3近4周的岗位数量变化情况
100000
90000
80000
70000
60000
50000
40000
30000
20000
10000
—岗位数量—岗位变化量
图4近12月的岗位数:■变化规律
・0-4k
■4k-6k
■6k-8k
・8k-l万
1万以上
图5薪资占比
4结语
本文设计的系统在功能和结构上可以清晰地划分成数据爬取模块、数据管理模块和数据可视化模块,分别对应爬虫技术、Navicat数据库管理软件和Django网络框架,成功实现了招聘数据趋势的可视化,在内存占用最少的情况下,确保了系统功能的完整性。
参考文献
[1]王甜.基于树莓派+Python的智能安防系统设计[J].科技
视界,2020(24):26-28.
[2]边倩,王振铎,库赵云.基于Python的招聘岗位数据分析
系统的设计与实现[J].微型电脑应用,2020,36(9):18-19,26.
[3]朱燕腾.Python的计算机软件应用技术分析[J].电脑编程
技巧与维护,2020(9):10-11,16.
[4]葛琳,杨娜.Python招聘数据分析[J].计算机与网
络,2020,46(16):62-65.
[5]张楚.基于Python的文本可视化方法实现与应用[J].科学
技术创新,2020(28):144-145.
[6]孙艳华,冯妍,李宏然.基于Python平台的金融数据分析
技术研究[J].信息与电脑(理论版),2020,32(15):155-159.
[7]王欣欣,马发民.一种基于DNN的少儿英语口语评分系
统的改进[J].信息技术,2020,44(9):46-50.