《基于Python的大数据可视化系统的设计与实现》8100字_第1页
《基于Python的大数据可视化系统的设计与实现》8100字_第2页
《基于Python的大数据可视化系统的设计与实现》8100字_第3页
《基于Python的大数据可视化系统的设计与实现》8100字_第4页
《基于Python的大数据可视化系统的设计与实现》8100字_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第[13]大大增强了用户的体验效果。在本次开发中,我使用Echarts直接连接MySQL数据库中清洗后的数据用图表表示,更加直观的将结果呈现出来。使数据的解析性表现更加准确。

3系统设计3.1开发环境介绍系统基于Python语言构建,通过Python中的json、Request等第三方库来完成数据的采集工作,将筛选出来的数据储存到MySQL数据库中,之后使用SQL语句在MySQL上运行达到数据的清洗和整理。在后端,使用SQL语句分析和计算MySQL数据库中已清洗过的数据,之后将结果推送到前端页面。前端主要调用Echarts可视化组件,将其各类数据及其之间的联系以柱状图、饼形图等形式呈现出来,完成各类数据向可视化图表的转化,最后用户只需通过其接口地址观察系统,使用Google或Firefox等浏览器即可。3.2系统架构设计系统层次架构如下图3.2所示:结果展示网络招聘数据采集与存储结果展示网络招聘数据采集与存储数据清洗数据分析视图层处理层采集层图3.2系统层次架构图数据可视化系统主要由采集层、处理层及视图层所组成,每一层都有着非常重要的意义。数据采集是整个系统数据的来源之处,在这个过程中我们不需要考虑别的影响因素,只需要能够把数据爬取出来并保存到数据库中即可。视图层是最重要的一层,它代表了我们本次实验是否能够完成,也结合了前端和后端的知识,使用接口的形式来将数据导入到前端图表中,这是从来没有尝试过的方式。3.3功能模块设计3.3.1数据采集和导入模块设计数据采集功能是通过Python语言自定义代码写出爬取51job网站的职位信息的代码。爬取之前我们需要先观察51job网页上翻页的规律以保证能够持续的爬取每一页的数据,很多网站的规律都不一样,51job网页的规律比较明显,会在网页链接上直接出现变化,这对我的代码编写有很大的方便。由于我们需要的数据量比较大,所以可以不设置终止条件,在想要停止爬取时只需要停止运行代码即可。通过对资料的查询发现,使用Python的Json库解析出的数据格式更加方便保存,故将爬取出来的数据转化为Json格式并将其保存到MySQL数据库中。具体的字段如下表3.3所示。字段名字段类型字段描述业务主键idInt是positionIDInt岗位ID否longitudefloat经度否latitudefloat纬度否positionNameVarchar岗位名称否workYearVarchar工作年限否educationVarchar学历否jobNatureVarchar岗位性质否financeStageVarchar公司类型否companySizeVarchar公司规模否industryFieldVarchar业务方向否cityVarchar所在城市否positionAdvantageVarchar岗位标签否companyShortNameVarchar公司简称否companyFullNameVarchar公司全称否districtVarchar公司所在区否companyLabelListVarchar公司福利标签否salaryVarchar薪资水平否crawl_dateVarchar抓取日期否表3.3数据字段由于51job不需要考虑被反爬的影响所以不需要用到第三方库time。具体流程如下图3.4所示:图3.4数据采集和导入流程图3.3.2数据清洗模块设计由于获取数据量过大、种类较多、采集到的初始数据会有很多不符合要求的,比如area中我们需要的是省份信息,而有的会另外显示出其所在的市,我们需要将其去除,只保留省份信息即可。经过观察不难看出数据的格式是:省份-市区,这样我们就可以设置将“-”及其后面的内容删掉即可。还有一些公司没有注明工作经验要求,爬虫工具便把一些错误信息爬到education中,由于其较少我们可以直接删除掉这一行数据信息。我们可以直接采用SQL语句设置每列数据的要求即可完成清洗模块。具体流程如下图3.5所示:开始开始结束education中字符数是否大于2删除整个字段保存在MySQLcity中是否有“-”删除“-”及后面的字符图3.5数据清洗模块流程3.3.3数据分析模块设计数据分析需要是利用一些知识和模型,让我们非常方便的分析出来一些有价值的启示,就比如在网络招聘的模型中,我们可以通过不同的模型对比,分析出很多对网络求职有用的启发。数据分析模块主要是根据清洗后的数据来进行关联分析,在这里可以使用Python中的第三方库pandas来做数据分析,也可以使用Jupyter软件来做数据分析。本此实验我们使用pandas针对薪资水平做了一些简单的数据分析。3.3.4数据可视化模块设计系统模块采用Flask框架搭建,在数据查询时主要采用SQL语句,将数据库表中的数据查询出来展示到前端页面上,前端主要用js+rem搭配使用,rem能使网站页面大小缩放一致,能够使页面更加流畅。可视化图表是将分析的结果进行展示,主要采用Echarts可视化组件,可以在百度推行的Echarts网站中布置好图表,将其整个封装起来写入js.js当中,其中主要包括八个图表和一个地图。其中八个图表有:行业及职位数量图、职业方向分布情况图、薪资分布情况图、工作经验分布情况图、融资情况图、公司规模图、岗位要求图和学历要求情况图,而地图中则显示爬取的数量在当地有多少个。数据传输方面主要使用ajax的异步传输,更加方便的将数据传输到页面当中。图表展示主要将数据通过接口导入js渲染文件中然后传递给相应的index.html文件中,并在index.html文件中使用不同的路径将数据导入到相应的直方图或饼图中。

4系统实现与测试4.1数据采集及导入模块实现数据采集及导入模块主要是获取相关的数据。经过初始的观察,发现翻页时网站链接发生了变化,由此可以在程序中以变量的形式定义页数,动态构造页面访问的网站链接爬取数据。这时可以发现,请求数据的网站链接是以json数据格式返回,我们需要设置不限制爬取的页数以便于持续爬取,若想停止只需停止运行即可。在返回的页面信息中对我们有用的信息包括岗位名称:positionName、公司全称:companyFullName、薪资水平:salary、城市:city、工作年限:workYear、学历:education等信息。由于51job网站没有太严格的反爬程序,所以我们只需要在爬虫程序中需要添加一个头部headers信息和cookies信息就可以完成爬取任务,cookies中主要是用户的访问地址和用户个人信息,同样需要写出。然后使用response=requests.get(first_request_url,headers=self.headers,params=self.params,cookies=self.cookies)的方法添加请求参数以及headers等信息进行url请求。核心代码如图4.1所示。图4.1核心代码图由于请求的返回结果是一个json串的形式,所以可以使用response=json.loads(response)定位职位信息,再使用job_list=response['engine_search_result']的方法得到数据信息最后使用forjobinjob_list:来完成循环,保证爬取到全部数据并保存到MySQL数据库中。数据如下图4.2所示。图4.2职位信息图4.2数据清洗模块实现在将数据文件导入系统之后就要进行数据清洗的操作。首先要将导入数据库的数据进行分析,找到一些不符和要求的数据。有些公司有未标明的信息,当我们爬取数据时,错误的信息就会被爬取到学历要求一列,所以需要剔除掉,使用SQL语句可以非常轻松的给剔除;而那些公司所在城市中有许多都在省份后面用-标明了所在市区,这是非常影响数据分析的因素,但这些数据都有一个共同的特点,我们可以使用updatetestsetarea=left(area,locate('-',area)-1)wherearealike'%-%'的方法来让“-”后面及“-”同时删除掉。数据如下图4.3所示。图4.3清洗后的数据4.3数据分析模块实现数据分析模块相对来说使用pandas较为方便,本次实验中是单独爬出的数据放入Excel表格中,数据分析时我们可以从Excel中提取其数据。将薪资水平:salary这一项拉出来单独分析,结果如下图4.4所示:图4.4薪资水平结果然后使用y[:5]将其前五个筛选出来并将其平均值求出。结果如下图4.5所示:图4.5求平均值结果4.4数据可视化模块实现该模块主要用到了前端HTML的代码编写和js渲染格式的编写,使用js能够将我们的页面看起来更有观赏性,首先使用HTML代码进行网页页面的格局设计,这里页面布局比较简单,只需要在li标签里分出一个整体布局即可,之后再使用一下代码实现接口功能如下图4.6所示。4.6接口实现图数据可视化模块共设计出九个图形化展示,分别为:行业及职位数量表、薪资分布情况表、融资情况表、公司规模表、岗位要求表、职业方向分布情况表、工作经验分布情况表、学历要求情况表以及职位数量的地图分布表,这些数据都是从数据库使用SQL语句中调用出来的。可视化图表结果如下图4.7所示:图4.7可视化图表展示

结论本系统是根据现在社会求职的情况所创建的网络招聘数据可视化系统。本文通过对招聘行业需求的调查研究,确立了较为科学的数据可视化设计架构。在进行本系统开发的时候也是困难重重,不过好在通过几个月的不断努力,最终顺利的完成了该系统的开发。从最初确定了题目之后,就开始去上网查询相关的各种资料,参考类似的系统,经过反复的研究,最后确定了该系统实现要设计的步骤。在确定之后,就要开始程序的编码,一开始感觉爬虫程序挺好写的,但是经过一番尝试之后发现,自己走了很多弯路,比如:招聘网站的选择是一大问题,有的网站反爬技术非常的强,会把我们的IP给禁用掉,导致我们无法爬取数据。我发现只有知识和实践经验的相互结合,才是最重要的。这对即将踏入社会的我们来说是非常宝贵的。这可以让我们在以后的工作中提高自己的工作效率,更加完善了自己的工作方法。该系统比较成功的实现了全套的功能,从数据采集一直到数据可视化展示等功能,实现了更直观的数据可视化功能,帮助用户可以更方便的观察到网络招聘行业的具体情况,很大程度上提升求职效率。以上内容仅仅是个人对网络招聘的数据可视化系统的具体需求的分析,相信数据可视化系统的深入研究还有很长的路要走。我会继续学习该方面技术,不断的努力,不怕困难,争取开发更多有用的程序。在系统的开发过程中,我大致实现了全部的需求,但是在一些地方还是有很多的不足,比如爬虫的网站方面,我尝试过对一些其他的招聘网站爬取信息,如拉勾网、boss直聘等,这些网站都具有自身的反爬功能,所以我的爬虫方式不适合这些网站。此代码只针对了get请求方式的网站,对于post请求方式的网站并不适用,所以还需要继续开发。由于对数据分析的要求不高,并没有着重去研究数据分析方面的算法,相信后续的研究中也应该加入这些功能。

参考文献裴丹丹.基于ECharts的数据可视化实现[D].北京邮电大学,2018.王瑞梅.网络招聘数据可视化分析系统的设计与实现[D].河北师范大学,2020.薛竞.大数据时代求职者使用社会化招聘平台影响因素研究[D].北京邮电大学,2016.中国网络招聘行业半年度报告2017年[A].上海艾瑞市场咨询有限公司.艾瑞咨询系列研究报告(2017年第11期)[C].:上海艾瑞市场咨询有限公司,2017:33.中国网络招聘行业发展报告2019年[A].上海艾瑞市场咨询有限公司.艾瑞咨询系列研究报告(2019年第7期)[C].:上海艾瑞市场咨询有限公司,2019:61.李爽,陈瑞瑞,林楠.面向大数据挖掘的Hadoop框架K均值聚类算法[J].计算机工程与设计,2018,39(12):3734-3738.殷丽凤,张浩然.基于Python网上招聘信息的爬取和分析[J].电子设计工程,2019,27(20):22-26.ClintonW.Brownley.Python数据分析基础[M].北京:人民邮电出版社,2017年8月.黎曦.基于网络爬虫的论坛数据分析系统的设计与实现[D].华中科技大学,2019.孙瑜.基于Scrapy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论