版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于python的招聘信息可视化分析系统设计目录TOC\o"1-3"\h\u32208摘要: III摘要:在这个火热的大数据时代,数据的可视化也在各行各业蓬勃发展、应用。网络招聘成为这些年来企业招聘人才的一种重要方式,既减少了流程的繁琐和大量的人力、物力的消耗,同时也是一个企业跟上时代水平的一种彰显。而当代高校大学生通常也会在招聘网站上查找自己想要的工作岗位,密切的关注公司所发出来的信息。但自疫情之后,就业显得越来越困难,为帮助毕业的大学生获得更多的就业机会,本次论文作者决定开发基于python的招聘信息可视化分析系统的设计。本系统中的招聘数据是用python进行爬取,爬取下来的数据在由可视化进行展示,用到的框架主要是flask与Django框架。首先,利用python的功能进行网络爬虫的抓取,在将我们所认为需要收录的所有招聘类网站列表中所有的相关招聘职位数据进行爬取收集下来,然后我们将要采集到的相关数据都存储起来到一个数据库文件夹中,之后,对这些采集存储到数据库的各类招聘简历数据逐一进行数据的预处理、清洗,再利用方法或者技术将所需要的岗位数据进行一个抽取,把不要的或者出错的删除,这样就得到一份较为干净的数据。在从干净的数据中找寻核心的关键字,利用绘图工具进行一个维度的研究分析下。最后通过本系统绘制的图像或者图表,进行数据分析,可以帮助用户有效的去理解这些招聘信息,进而获得就业机会。关键词:网络爬虫;招聘信息;数据分析;可视化平台1.绪论1.1.研究背景在我们如今这个社会经济中,移动与互联网行业发展中已经有许多新兴的高科技行业开始产生如电子商务、物联网、金融、大数据等。在这些行业中每天所产生的数据正成一个爆炸式的速度进行增加,增长的速度远远超过我们的想象。网络调查分析得出,每天的移动通信网在网络节点上会有每秒数万字节以上的数据流量在网络传输,而互联网搜索引擎每天至少也就能够处理每秒数万TB字节以上的数据。网络上的数据不断的产生,也引发应用程序不断深入优化和开发,可见数据之庞大。虽说数据存储能力也在不断升级,但也满足不了我们爆炸式增长的数据。因此,让人们越来越意识到数据的价值和重要性。但是这么巨大的数据量换做是专业的数据分析和处理人员也是十分的头疼,这些数据是十分的繁重,枯燥,不是专业的分析人员,我们或许连看都看不懂。那么我们为何不直接做一张图表,将这些数据进行一个像图片一样展示在我们的面前,这样我们理解起来就很轻松了,故本次论文的可视化就解决了这些问题。可视化技术也是比较高深的一个课题,学者们将可视化分析分分成了两个不同的研究方向,即数据的可视化展示和分析研究两个方向,而本次论文,是借鉴现有的较为成熟的展示技术经行的。根据众多研究报告表明,人们对于外界环境中的信息获取大部分都是由视觉感官进行获取的,而面对如此繁杂的数据,也会让我们难以进行查阅的兴趣。因此我们将海量的、庞大的、复杂的数据通过可视化的方式进行展示,把这些数据绘制成不同的图像或者表格,这样有利于让我们对数据理解和运用。招聘兼职的大型网站现在都层出不穷,如有58同城、前程网无忧人才网和智联招聘等网站等。而像现在的这些三大权威招聘信息网站上有点繁杂,虽然这些招聘网站查找关键字的速度越来越快、查找越来越精准,但很多的招聘信息不在同一个页面或者说是网站里,我们会看到很多,如这个招聘信息在这个招聘网站上但另一个网站上没有,求职者需要进行不同的比对,期望能从不同招聘网站中进行查找、比对。为此我们也打算对这些招聘网站上放的信息进行一个分析,了解这些工作岗位、了解这些技术信息、和公司信息以及了解当前行业的发展现状。我们把这些数据制作成一个表格,这样就能从中找寻自己未来想从事的职业并进行一个合理的规划。为了让表格或者图像更加清晰并且有效的传达这些招聘数据中的信息,直观地向用户展示这些关键的信息,因此,借用这些成熟的可视化技术,利用图形和图表的方式来展示数据是我们更好的一种选择,也是能实现的一种技术。1.2.国内外研究现状1.2.1.国外研究现状数据可视化时计算机图形学下的一个类别,简单的概述就是将复杂的数据用图形或者图表的方式去表达出来,计算机又是一个很好的绘图工具,其下面的图形更是十分的丰富。而数据和可视化等领域技术起源于本世纪1950年初提出的计算机图形学。当时,人们还通过微型计算机技术创建发展出了当今世界上应用最早广泛的一批图形图像。在之后的1987年,BruceMcCormick、ThomasTivanti和MaxineBrown通过这三位专家编写并发表《科学计算中的可视化》这一报告,报告中提出了可视化的可行方法,以及未来可视化所应用范围邻域。之后他们便共同进行开展了有关数据的可视化技术和关于信息的可视化方法的邻域应用研究,并最终促进到了数据的可视化理论和信息的可视化实践的发展。直到二十世纪九十年代的初,很多国际专家也开始逐步展开研究了对信息的可视化的相关研究领域的开展这些研究,主要目标是为了能够解决当前许多现实应用技术领域中对于抽象的数据信息的可视化分析,而后随着数据信息可视化技术作为了一个能够同时用于包括数据科学的和数据信息的可视化技术的相关研究的领域内的一种新生的术语,出现在了人们的眼前,其涉及领域中的应用研究范围和技术应用研究范围也在越来越越广。随着技术日新月异的迅速发展,数据可视化中许多的技术、功能包等,更加成熟了。可视化就是,将数据通过图像表达、数据建模画面等,直观且简单的展现到我们的眼前。而网络招聘起源于美国,由于网络的发展,网络的普及率也随之增大,许多的线下招聘也逐渐变成线上了,再通过一些专家将相关岗位的数据信息行爬取,经过分析解读出相关岗位的技能和工作需求。通过专业人员的分析与解释,列出这个岗位的所需的专业技术、岗位需求、以及招收标准进行一个列表或者图像,在用这个列表或者图像中的数据或信息和一些岗位专业分析师之间进行比较,经过多次的对比,减少数据的误差,以达到数据精确的展现。1.2.2.国内现状我国是2003年逐渐兴起的,直到2007年才步入高潮。经过众多的计算机专家的研究与分析,再和国外可视化技术的最新研究理论与实践相结合,再结合可视化的来源,进行了一个深切讨论,之后在国内网络环境下进行了可视化的不同领域中应用和发展。经过这些专家的讨论,不仅很好给我们很好的展示了可视化和数据分析的区别等,而且也发展处理适合可视化的框架技术,并得出了在未来有很好的发展趋势。经过这么多年的发展,许多的技术也从开始的完善到现今的成熟,其中的很多人的努力才得以发展的如此迅速。经过大量的阅读资料后,在可视化的领域,许多的技术都是已经成熟,到如今也只是更计算机硬件发展一起进行了。而我国在计算机领域的许多方面都是起步比较晚,随着互联网不断的深入发展还有数据的应用,我国对于数据可视化的发展也在不断的深入,技术越来越完善。互联网发展如此迅速,随着数据的增长,从数据读取的数据也越来越多,故人们越来越重视到这些数据的重要性。特别是现如今在互联网领域中各种技术如雨后春笋一般大量出现,现如今已经成为大数据或者是金融等一些列需要处理数据的热门行业中,已经成为了不可缺失的存在。现在为了符合社会的发展,面对各行各业对数据的需求,许多的学校也进行了一个研究,而政府对此也是相当支持。很多的企业也分别在不断的研究当中,为其提供了很好的发展前景。在去年工信部新发布文件的《物联网十二五规划》规划中已经提出,要始终把工业信息技术研究作为企业创新示范工程培育的五项重要新技术内容之一,其中这种就包含了数据存储,挖掘及图像分析。1.3.研究意义如今毕业的大学生,面临着严峻的就业形式。他们积极地参加各种招聘,而这些招聘中有的是在线下招聘,而线下需要大量的跑动,并且招聘的信息还不完全,故大都是去招聘网站上去寻找自己心仪的工作,省时间又能快速的找到自己想要的工作信息。而线上招聘网站的信息庞杂,应聘者不好做分析、对比、判断。但一般网络招聘都有明确的招聘要求,而本系统的目的是帮助应聘者在网络上足不出户就能了解自己想要从事的岗位、薪资、以及各种福利,以及这个岗位所需要的专业知识,还可以根据网站上的各种需求去了解现在社会上需要的专业能力,并能从中找寻到自己发展的方向。1.4.研究方法本系统利用python进行一个招聘网站页面的数据爬取,再将爬取的数据存入到临时库中,这过程是一直在循环,而我们所建立的临时数据库把爬取下来的数据按照一定规则进行存储、排序,将不符合我们的数据进行清理,就不会出现在我们的数据库中。而符合规则的在按照关键字进行排序,保存在我们的数据库中,在python中进行一个索引进行链接,在索引去中进行分类、排序、归档,最后将数据结果展现出来。简单一点来说数据可视化分析平台也就是一种基于Web前端开发的数据分析可视化系统,第一步就是要对招聘目标网站数据进行采集,第二步将抓取到的数据进行一个简单的处理和解析,第三步用图表的形式为用户提供一个直观的可视化展示。如下图所示。索引区索引区在索引区出发抓取网页网页将抓取到的网页存放到临时库中进行临时库循环不符合规则索引区符合规则搜索引擎查询在索引区中进行分类、规档、排序,然后将结果展现出来清理图SEQ图\*ARABIC1研究方法上面介绍了数据是怎么爬取下来,系统的重要的三个模块,这几个模块分别是:网络爬取模块、数据处理模块、可视化展示模块。网络爬取模块:就是将招聘网站上的我们想要的那部分信息爬取下来,主要运用到的技术是spider爬虫技术。数据清理模块:将爬取下来的数据,进行清洗、查重、排序等一系列操作,拿取我们想要的那一部分。数据可视化模块;将这些数据制作成我们想要的,简单的、清晰的图像表格。招聘网站招聘网站爬取招聘信息数据排序、查重清理粗糙数据格式化数据测试数据数据可视化展示数据爬取模块数据清理模块数据可视化模块图SEQ图\*ARABIC2数据处理相关技术介绍本次系统需要用到的技术有:Djangomvc框架,Python后端开发语言,spider爬虫技术,csv文件生成,BeautifulSoup请求解析模块,request请求模块,ECharts可视化框架,matplotlib(python2D绘图库包),numpy(数值计算包)。还有数据库的建立,以及html与js的网页编写技术。Django框架介绍Django是一个python语言环境下开发的一个网络应用开发的框架,对于大型网站来说具有快速的开发安全运行和易维护管理的强大特性,能够满足开发任何类型的大型网站需求的多功能框架。当然Django是免费的,具有开放源代码,在网上有很多的解决问题文档方案。而它也属于一个技术比较成熟完善的框架,而它自身的突出特点即是具有通用性、安全性、可高扩展性、可低维护性、灵活性的重多优点等.本系统之所以会选择Django,是由于Django框架有很强的代码复用性和快速开发的特性,当然它最出色的是组件的可重用性和可插拔性,这于Django设计的最初目相符合,将复杂化的网站开发简单化。Django框架应用程序通常将处理的代码分别存储到单独的文件中,是从总体上按照MVT的模式进行设计,将Web应用分为模型(Model)、视图(View)和URLs映射和模板(Templates)四层如下图所示。HTTP处理响应请求HTTP处理响应请求URLs映射请求转发ViewModel读/写数据Template模块引擎HTTP响应图SEQ图\*ARABIC3Web应用模型(Model):是定义应用程序数据结构的对象,并在数据库中执行的是添加、修改、删除和查询的作用。视图(View):就是一个界面显示,主要负责和用户交互的,也能看到处理数据的一个过程。URLs映射:将请求到的URL建立一个映射,进行这个链接的字符串或数字的匹配,再将匹配到的数据或信息发送到视图,其实这个过程存在与视图之中。模板(Templates):视图可以使用HTML模板,得到模板后又将数据填如到这个模板当中,使这个HTML页面更加完善。上述主要重点介绍了模型Django框架模型中的这两个重要的控制逻辑部件,而到这里我们接下来需要着重用到的是另一种框架模型Django框架中实现的MVC框架模式。在完成主控制器中从接收的用户数据的转换到完成发送到用户的输入设备的数据转换的实现这一实际工作任务过程中,MVC模式把在主控制器模块中所有需要独立实现运行的操作的模块功能进行简化到做了弱化,直接有效地做到将一个主控制器模块功能与其他用户模块功能一起单独封装而成实现了这样一个能完全实现单独实现运行功能的独立操作的模块,同时它又进一步加强并完善了在前端视图部分所实现运行的操作功能,增加和完善了前端模板功能和实现了对前端网页模块功能的高度复用。M代表模型系统,在整个MVC系统中的三个最重要的部件系统中,拥有最复杂且繁重的处理任务的功能。在处理另一个数据库时,把其中一个数据库对象转构成的另外的一个数据对象返回来再做一个处理,其中返回而来被处理对象的处理数据一般都是数据相对比较中立化的,没有必要达到其他什么的数据格式要求,也这样即这样可以一次连续提供给多个的数据库视图对象来多次提供一个处理的数据,即这样的一次数据库处理的代码数据也就是可以被多次提供被处理这的多个的数据视图对象来进行重复多次地处理使用。V代表视图,是一个用户所能看到的并能实现交互功能的界面。在一个MVC环境中它可以主要的处理从多个不同类型的程序中所被执行显示出来的图像,是其中一种可以作为输出数据并同时允许多个用户执行操作图像的特殊功能。C代表一个模板控制程序,控制器接收到输入指令,但是并没有实行任何模型和视图模块去自动完成某个用户提出的处理需求,只是先接收某个请求输入并用那个视图模块去实现或处理了这些请求,再用那个模型视图模块来自动返回数据图像。Django框架的功能是很强大大的,它不止有一个URL分发器,可以实现多个URL的管理以及处理能力。如本次的实验中就用到了另一个URL的功能,这个URL主要是为了匹配字符串里面的数据服务的。具体流程如下图:View视图根据URL匹配相应视图函数返回HTML文件传输数据寻找一个视图模板Models模型用户选择要访问的urlURL控制器Template模板数据库去数据库里取数据View视图根据URL匹配相应视图函数返回HTML文件传输数据寻找一个视图模板Models模型用户选择要访问的urlURL控制器Template模板数据库去数据库里取数据图SEQ图\*ARABIC4Django流程图Python技术由于互联网上的数据类型各种各样,且资源有限,而我们如何去找寻一个可以很好地抓取网上数据的工具呢?可以使用爬虫。首先要去了解什么是爬虫。网络爬虫(WebCrawler)也叫做网络蜘蛛,可以根据别称就能联想到蜘蛛抓捕猎物时的情景,而python所用的方法就是做一个程序好比蜘蛛织网,去抓取网络上的数据。网络信息数据爬虫简单直白一点地来说,就是按照一定程序的规则,代替了让我们自己去自动地去抓取各种互联网信息数据的程序或则说是爬虫脚本。爬虫抓取技术存在的另外一个最本质目的其实就是为了通过模拟的浏览器去打开获取那些我们真正所真正想要的去获取到的数据的那些网页,在我们打开抓取这个网站过程的中,捕获抓取到那些我们所真正的想要的获得到的那一部分数据,如我们可以爬取网络上我们想要的那些照片、音乐、视频等等,可以通过爬虫技术获取。爬虫的工作模式如下图所示:发起请求发起请求在网页上获取相应的内容解析所获取的内容保存数据响应保存到文件中进行排序、归档操作图SEQ图\*ARABIC5爬虫工作模式由于网络技术逐渐的日益成熟,现在国内许多主流的网络爬虫工具都是直接用脚本语言来进行编写可执行的程序,网上的爬虫编写语言很多,而我们本次选用的是python语言来完成本次的设计,python的设计混合了很多的传统语言,如c、java的特点和多数脚本语言的特点。Python具有许多的第三方库。Python据有以下特点如代码开源,易维护、可移植、易于使用、有广泛的标准库、可扩展等,因此python在编写网络爬虫中使用率也是及其的高。网络爬虫分类网络爬虫技术经过专业人员的分析,把众多的网络爬虫技术按照爬虫的功能范围分成了四种,通常也可以进一步分为通用的网络爬虫、聚焦性网络爬虫、深层次和增量式爬虫技术,一般在爬取数据时都是将多种不同的爬虫技术一起结合使用,这是根据不同的爬虫技术或者用户爬取的数据类型和深度所进行的。在中国如今主流的搜索引擎网络爬虫应用中有很多应用都是通用爬虫技术去搜索,通用网络爬虫应用技术能够符合当今各种网络应用场景需要的各种搜索引擎,如百度、谷歌、搜狗等。它将我们想要爬取的Web的URL制定成一个资源定位符。在从这个URL中访问我们想要的信息,通过这一个URL或者定位符,就能扩充到整个Web。之后在开始抓取其中的数据,在抓取数据时,也在不断的对URL进行更新,将新出现的URL和没有爬取的URL加入到URL队列中,当满足了我们所指定的爬取条件时,就会停止爬取。NoYesNoYes图SEQ图\*ARABIC6爬虫工作流程图而聚焦网络爬虫相对与别的网络爬虫又有自己的有点,它可以选择我们想要的或者预先指定好的那部分数据爬取,简单来说就是抓取某一部分数据。相比与其它通用的网络爬虫,更加多的是节省了资源,由与保存的页面数量比较少,故其速度及更新周期也可能会很快,可以很好的满足网站上需要特定区域的爬虫需求。增量式的网页内容爬虫,是指一种仅指的只会对所有当前的已下载产生新下载出来的网页数据采取的增量式的数据更新的方式和方法只能够用于爬取所有当前的新已经下载产生更新出来数据的网页数或者所有当前新已经被下载或发生有较大变化数据的网页内容数量的一种网页爬虫,它当然也希望能够真正实现在从某一定程度的某程度意义上可以真正保证所有当前新爬取出数据的页面数的尽可能的够新。增量式的网络爬虫方法并不需再重新下载一个没有包含任何先前发生的过大变化的内容更新的新页面,可能会比较有效的减少了数据消耗和下载的请求量,即使用户无需再次更新一个已重新进行内容爬取处理过的新的网页,减损了小程序时间资源占用量和较小的空间成本上的一个巨大的浪费,但是它又大大的增加了网络爬行算法本身设计上的大程序复杂度系数和新技术的实现应用的难度。深度网络爬虫,根据名字就能看出来,更深一层次的爬取。是指那些其大部分内容页均属于不能实现完全地通过静态链接方式而能获取相关内容页面的、隐藏在搜索结果表单页后的,只有通过需要由用户自己主动提交信息的或者一些通过特定的关键词进行链接的才能达到自动搜索获得用户信息功能的静态Web页面。爬虫的请求和解析库由于python中的库有很多且功能也很强大,在本次网络爬取中,主要介绍在用python时会经常使用的请求和解析库,Urllib库、BeautifulSoup库。requests模块和url-parse模块,这些模块虽然都是python中常见的知识,但也是本次论文中非常重要的。Urllib库是在python中常见的且应用广泛的第三方库函数,用于获取URL链接的标准库,并将爬取下来的信息或者数据进行一个存储,其中我们也可以设置信息头、超时认证等。组要有这几个模块:request常用于打开指定的url链接,也可以阅读url中的内容。块的定义包含了一个有助于用户能够在各种复杂的网络环境情况下中正确的打开URL页面,在本次论文爬取中经常在使用。error异常处理模块,我们用reques去阅读或者打开url时,会遇到许多的异常,通过一个异常检测,把这些异常包含在这个error模块中,我们想要的内容也会正常显示出来。parse模块,用于解析我们指定的url链接。在获取到目标网页中的整个网页信息之后,我们还需要对获取到的页面进行一个解析并从中提取所想要的信息。整个网页的信息其实很乱的,我们很难从中去直接去获取,这里的这个过程就要提到python中很多强大的解析库和大量的解析方法,BeautifulSoup的操作就是将页面信息提取出来按照树形结构,访问每一个节点的方法遍历每一条信息。BeautifulSoup库其实是将一个复杂的静态HTML文档转换成了一个很复杂的树形结构,而其中每个节点实际上就都是了一个python的节点,所有的对象一共也就可以简单拆分为这四大数据类型,如下所示。Tag把HTML中的标签节点看成是一个对象来操作,它的使用范围比较广,查找到对应的标签及其内容,如果没有特别的指明,这里拿到的一般时第一个标签的内容。NavigableString查找到对应标签里的内容,把这些信息遍历成字符串形式,用来匹配。BeautifulSoup代表的是整个HTML文档,当我们需要整个文档的信息时,可遍历的字符串,用它来打印出来。Comment其实是一个特殊的NavigableString,但输出出来的内容不包含注释符号BeautifulSoup库虽然本身具有了很多强大丰富多样的API类型库和很多完全不同的数据解析的方式,可以很快速也很方便的使用来快速进行数据信息的提取,但是正因这样它是完全地依赖于另一个lxml库,所以请你注意在您首次尝试使用到这个叫BeautifulSoup库的库时就一定是需要在事先就确保了它是已经被安装并且调试并成功调用到这个了这个lxml库。将爬取下来的网页转换成问道后,在依次进行对文档里面的元素或信息进行一个遍历查找,直到将每个数据的信息都完成查找后,在将这数据存储到另一个指定的文件中,之后进行数据展示。可视化技术介绍可视化技术是在1987年提出,并经过多年的发展,和广泛的应用,在如今的许多行业都能看见它的应用。经过长时间的沉淀,各种技术大佬或专业人员的努力,各种可视化框架也在不断的出现,其功能也在不断的变强。可视化原理是指利用现代计算机最新的视觉图像编辑处理等技术成果和应用计算机图形学,将各种数据直接转换成各种图像信息或用表格等的数字形式直接在计算机显示的投影屏幕中或者是投影仪银幕上所展现的出来,在此进行对其中有关的技术理论分析研究,制定开发出了一定程度的应用技术工具和方法。可视化数据处理技术简单一点来说就是能够将大量繁杂抽象的数据信息转换成一些能做到被检索人的直观清晰、容易阅读和理解的表现形式,把数据的重点和数据的分布规律直观地展现出来,之后在进一步去了解和认识这些数据,在从中研究出或者得出我们想要的结论。它也是结合了到了计算机图形学、数据挖掘技术、可视化分析技术、图像技术、图像学理论等领域能将这些冗杂的数据变成一幅幅有色彩的图片,也能构建一个很好的交互式界面,让人们更好的进行对数据的分析。2.3.1.ECharts可视化框架ECharts是国内早期出的,一个由百度公司开发出来的,基于JavaScript语言编写的数据图表可视化图表库,也是中国最后的一款功能最强大的数据图表可视化图表工具,在2018年被百度捐献给了Apache基金会基金会,这应该也是其中最后一个被开源的,同时也可以实现跨平台框架链接运行。ECharts可以在任何不同类型的浏览器下流畅的运行,原因主要来自与它底层相关的强大的矢量图形库ZRender,并能够提供出一个看上去很是直观、交互十分流畅、可自由化制定的可视化库。ECharts不仅是拥有高性能的图形渲染器,而且也是一个可以随意指定定义内置的图表类型,随意的方面包括,视觉设计语言,并且具有很高的可扩展性。作为一个完全基于JavaScript技术实现的图表库,它也并不仅单单只是一个拥有承载着许多图表相应的功能的模板,像各类复杂的图形、图表都是又可谓十分的丰富。在交互方面,ECharts也是具有七个不同的可交互组件,并且支持多种图表或图形的混搭,可以给人们设计一种相当好的一种视觉效果,且也是一种很强大的图表渲染库。并且ECharts还将可以实现直接地利用Ajax等前端技术以及自身的强大的事件机制,后台数据与前端的的界面连接,这样简便了数据的操作性,同时也可以提高系统的效率(在相同的硬件配置情况下)。当数据发生改变或者传入新数据时,数据的动态展示效果会随之发生改变,提高了对数据整合和挖掘的能力。图SEQ图\*ARABIC7Echarts可视化框架流程图2.3.2.Matplotlib绘图Matplotlib是python中常用的一个库,组要是在2D的图形领域中使用。使用它我们可以很轻松的经数据进行一个图形化的绘制,而且它拥有了多种不同的输出格式。它能结合NumPy产生的数组来进行一个图像的绘制。脚本层脚本层后端美工层图8Matplotlib结构■脚本层:生成图形与坐标系■美工层:它提供了绘制图形的元素时的给各种功能,例如,绘制标题、轴标签、坐标刻度等。■后端层:主要提供一个画布,在画布上经行绘图。2.3.3.NumPy数据分析NumPy是python中一个功能十分强大的库,主要是对数据进行一个数据操做以及数学计算。它里面包含了许多的库函数可以帮助我们轻松的进行数值计算。而实际上它被应用到的研究范围相对比较的广泛,如人工智能系统中的机器学习、数据智能分析算法中的图像识别处理、数学计算等。对数字处理能力是很强大的。而在本次论文中主要将与Matplotlib结合使用,绘制一些图片系统总体设计爬虫总体设计在前面,介绍了爬虫的一些相关知识,本次爬虫总体流程主要分为四部分,分别是,前期准备,获取数据,内容解析,保存数据,如下图所示:前期准备前期准备获取数据内容解析保存数据图9系统设计流程前期准备:我们要先去查看需要爬取的目标网站的信息,查看目标网页的链接,页面信息,数据范围等,主要借助浏览器的开发者选项查看网页中数据的位置。获取数据:查找到了网页中数据的位置,对应标签的链接。在用python中的requess模块去请求网页信息。内容解析:我们爬取先来的网页html,但里面的内容都是用html代码,而我们想要信息或数据都是在其中。我们需要依次进行查选取,这就是对内容的一个解析。保存数据:经过一系列的解析,把我们想要的信息或者数据,选取下来并写入excel表格中,之后进行测试完成保存在数据库中。数据预处理流程设计把数据通过爬虫方式获取的,原始的数据可能存在缺失、重复、不完整的情况,这时候就要进行一个数据处理。如果要数据存储到数据中,要进行一个数据的处理。连接到数据库以后,去除数据相同的或者是重复出现的值,在进行一个关键字的构建,保证在原有的数据上完整。图10数据处理流程数据可视化设计把清洗完的数据存储下来,保存在数据库中的数据在存入到数据库中,经行一个连接,将数据绘制成一张张能直观图形展现在页面上。这个地方组要包含了用户的登录模块以及可视化图形的一个展示。图11数据可视化流程图系统详细设计按照总体设计的线路,分别进行每一步功能模块的设计,开始实现了该系统初步各项功能并进行其中相关细节的展示。爬虫详细设计首先我们进入目标网页中去查看数据,列如本次选择的是智联招聘中的python工作岗位的一些信息,查看了网页的数据。进入开发者模式,就能看见对应网页上数据信息的位置。如下图:图12网页信息图主要查看公司名称、工作名称、薪资待遇、工作地区、经验需求、学历要求、职位标签、岗位描述信息等这些我们需要的信息位置。图13提取招聘关键信息同时在爬取时,我们所用的浏览器会给目标网址发送信息,这里的信息我们也需要查看。图14爬取网页数据用户信息例如user—agent本机的信息,在爬取时如果没有更改,那么就会被网页的反爬取给阻挡,之后如端口,传输的数据类型等都要查看,查找到了这些我们想要的信息后,就里用python进行一个网页的爬取。爬虫模块功能设计在爬虫界面进行爬虫时,会出现大量的目标网站相关的url信息,在而我们想要的数据或者信息就在里面,我们所需要进行的就是将不同的url拼接,得到完整的相关地址进而获取相应信息。对已经获取的信息进行解析,将解析后的数据存入一个文档中。数据被获取并且加载执行完毕后,用一个API可以首先从一个xlsx文件里面读取最关键部分的数据信息,在读取之后会用该API自动生成的一个可视化的图像API(应用程序编程接口)一般都是指由的一些预先就被定义好过了的函数,目的也都是为了用于提供这样一个应用程序与一个开发组人员之间具有基于调用某类特定软件程序或对某种特殊硬件程序所得以的同时进行访问处理的任意一组例程之间联系的工作能力,而又完全无需访问其源码,或能够理解其内部的工作机制中存在的另外一些细节[4]。4.2.1.requests库用requests库来获取网页的请求信息。requests库并不是Python的自带的库,在使用时需要导入,如果没有导入则会报错。在代码的最开始就需要导入importrequests,之后在获取url才能成功。如导入时报错则需要安装或者重新安装,这里选择是在pycharm的终端窗口中输入指令:pipinstallrequests,就能进行rquests的安装,而这里需要注意你的pip命令是不是符合你所用的pyhon的版本,同时也需要在这个项目的设置中查看,是否已经下载完成,以防止在爬取时会出现错误。requests库安装好了,就需要对目标页面的url获取。要给目标网页发送一个头包,告诉目标网页机型是什么以及我们的请求cookie:res=requests.get(url=url,params=params,headers=headers,timeout=15),其中get时一个请求类型,之前在做爬虫准备时就需要知道当前网页的请求类型,params为详细的请求信息,headers为本地计算机的型号信息,需要模拟进行本地浏览器,发送给目标浏览器,timeout是我们设置的超时时间,由于网络波动,延迟等,以防止一直在运行。超时函数就是用来防止时间爬取时间太长而爬取失败,如果访问目标网站超过了15秒时,就会报错,避免了长时间占用时间。4.2.2.re库re就是整正则表达式,将页面的数据转换成字符串的形式,依次进对字符串的查找。在使用re时我们也需要导入这样一个包importre。拥有一个很强的搜索功能,当从目标网页经行爬取时,会发现有很多的数据,而且很乱,有很多是我们不需要的,又想把需要的数据展示到一个页面上时,就需要强大的搜索功能。同时如果这里也可以进行一个数据的筛选,为我们之后的数据清洗解决了很多的问题。部分代码如下所示:#导入re库importre#筛选出公司的名称company_name=re.findall(r'"company_name":"(.*?)"',response)#筛选工作名称job_name=re.findall(r'"job_title":"(.*?)"',response)re.fndall则是匹配文档response中所有公司和工作的名称,把它们进行一个提取,并保存,"(.*?)",表示的时对应地方的所有字符,而response我们获取的url中的信息。根据这种方式我们可以依次筛选出工资名字、工作岗位、薪资待遇、地点、工作详细链接、公司类型、详细发布时间、福利、公司规模、行业、属性介绍。之后在进行一个遍历一次把一条数据存入一个表格中展示结果图。图15数据采取结果图数据处理模块设计数据处理对于数据的数据处理是实现可视化分析的另外一个十分重要技术前提,在需要利用Python工具进行可视化数据可视化分析建模时,若要直接连接到数据库,然后可将数据库需要调用的数据模块数据直接导入到Python库中去进行可视化分析。由于通过网络链接进行的爬虫可以获取到的网页上的原始数据,但是网页上存在有许多的信息是缺失、重复、不一致、不完整等一些列的问题,原因是因为每个公司所需要的招收信息不一样,以及里面许多的专业字段不相同,和空值、|等字符的存在,如果没有经过数据处理这一步骤,那么绘制出来的数据或者表格里的数据可能会有一些差距,也导致在后续的分析中出现偏差,未来避免减少数据的出错误,因此在数据分析前的数据处理是很重要的。流程如下图所示:图16数据预处理我们先进行对采集下来的数据进行一个简单的清洗,就是将里面我们需要的数据或者信息进行一个保存,然后再将保存的信息进行处理,如补全、去重、或者删除,确保在之后的数据可视化之前的能顺利进行。数据经清洗筛选后,将按招聘求职信息文档中规定的相关岗位名称、工作场所地点、工作经验、学历、薪资条件等按照结构化的文本字段方式进行数据统一存储处理。部分结构化公开招聘信息文本字段格式如表所示:表SEQ表\*ARABIC1爬取数据显示表数据分析模块设计Matplotlib是一个使用Python编程的2D彩绘图像库,可以用来快速的生成一个适合在各种跨平台的交互式环境中图像物质,在python中是一个即快速又相对简单的简单的一个绘图工具。python语言本身就非常的适合一些脚本语言,而Matplotlib在python中也相当于是一个脚本。本次论文就是使用matplolib绘制视图,部分代码如下:plt.figure(figsize=(25,20),dpi=90)#定义视图的大小。#显示折线图plot=plt.subplot2grid((4,3),(0,0),colspan=3,rowspan=1)#相当于将一个格子拆分成了3行3列,列跨度均为3,行间跨度也各均为1plot.set_title("经验需求高到低走向")plot.plot(xname,ynum)plot.grid(axis="y",linestyle='-.')forx,yinenumerate(ynum):plt.text(x,y,'%s'%y)#饼图companysize=db.get_companysize_pie()#定义需要用上的空数据数组,然后通过遍历数据库的数据将数据附上去nameCompanysize=[]countCompanysize=[]#遍历表里的数据forxincompanysize:nameCompanysize.append(x[0])countCompanysize.append(x[1])pie=plt.subplot2grid((4,3),(1,2),colspan=1,rowspan=1)pie.pie(countCompanysize,labels=nameCompanysize,autopct='%.1f%%',shadow=True,startangle=90,pctdistance=0.7)pie.set_title("公司规模占比")#表标题文字pie.legend(bbox_to_anchor=(-0.1,1))#作者标题以Python行业为例,数据分析得到的视图分别如下:图17公司对python的学历需求图18招收python岗位对经验需求的图19对该网站15天内对python以内信息发布用户模块的设计为了一个美观的效果,在可视化界面的时候,有一个用户登录界面,登陆后里面的数据是从数据库中的数据连接,这样我们在设计的时候,要考虑的连接到数据库,以及flask中的页面展示效果。这里的用户账号,密码都是存放在数据库中的。代码如下:#导入模块fromdb.mysqlimportMysql fromflaskimportFlask,render_template,request,redirect#连接数据库app=Flask(__name__)db=pymysql.connect(host="",user="root",passwd='dddccclll',db='qcwy')cur=db.cursor()@app.route('/')defindex():returnrender_template('index.html') #用户登录@app.route('/index',methods=['POST'])deflogin_post():username=request.form['usm'] #用户账号密码password=request.form['pwd']print(username,password)sql="""selectusername,passwordfromuserwhereusername='%s'andpassword='%s'"""%(username,password)cur.execute(sql) #取数据库中保存的数据results=cur.fetchone()ifresults:returnredirect('/data')db.close()else:returnrender_template('index.html') #导入网页db.close()在这里的导入网页,用的是提前用html写好的一个简易的网页登录窗口。图20用户账号、密码注册表图21用户登录界面系统实现及反思运行程序后保存下来的data.csv文件中的数据,部分图:图22爬取数据结果部分图图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全月讲堂教学课件
- 初中二年级物理《运动的快慢》教案
- 安全隐患图示
- 安全员汇报教学课件
- 山东省临沂市2026届高三下学期一模考试英语试题(解析版)
- LBO模型完整搭建:从假设到IRRMOIC的七步操作
- 2026年建筑安全工程师建筑安全评价与控制模拟试题
- 2026年智能制造设备维护与管理实战习题
- 人教版初中八年级数学三角形全等的判定(SAS)教学设计
- 初中数学八年级下册“提公因式法”教学设计
- 2026年薪税师综合能力等级考试模拟试题及答案
- 2026年山东省聊城市辅警人员招聘考试题库及答案
- 2026年南京新工投资集团有限责任公司人员招聘笔试参考试题及详细答案解析
- 2026生猪期货市场运行机制及价格波动影响因素研究报告
- 第6课 人民当家作主 第1课时 课件(内嵌视频)2026-2027学年道德与法治五年级上册统编版
- 高二语文早晚读检测小纸条学生版(选必上册共12个 )
- 2026 年办公区域安全生产防范知识课件
- 2023-2024学年安徽省六校教育研究会高三(上)入学语文试卷
- 2.4《中国的自然灾害》参考课件
- 2026年安徽合肥经开区社区工作者招聘考试试卷-含答案解析
- 2025年山东省检察院员额检察官遴选考试真题及答案
评论
0/150
提交评论