标题 | 基于python的招聘信息爬取与分析 |
范文 | 潘承佳 刘冬冬
摘要:随着人工智能,大数据时代的来临,python语言也因此大热,python语言在编程语言排行榜中也水涨船高。与python有关的岗位在lT求职市场中,也越发显得旺盛。分析python岗位的具体情况,对于大学生求职,以及自己未来的职业规划都具有深刻的指导意义。该文利用spider技术爬取了近700页的岗位信息,并对这些粗数据进行数据的清洗,分类。利用预处理之后的有效数据,进行数据分析,并绘制相关图表。此外,还对招聘要求进行分词、去停用词后,绘制词云。通过一系列的可视化操作,该文对于python岗位在全国IT市场的行情,有了更深入的了解。可以得到薪资和学历,薪资和工作年限,一线城市岗位的规模比较以及岗位招聘要求的词云图等信息。 关键词:spider;python;可视化;数据分析 中图分类号:TP391.1 文献标识码:A 文章编号:1009-3044(2020)27-0102-03 開放科学(资源服务)标识码(OSID): 1 背景 目前,IT界对于python人才的需求已经越来越旺盛,然而python专业人才相对其他语言相对较少,这就使得python相关岗位数以及工作薪资待遇显著提升。本文选择国内最大的招聘网站51job为平台,利用爬虫技术、数据可视化技术对python岗位进行分析,从而从真实的数据层面反映当前python人才市场情况。网络爬虫具有诸多优势,可根据用户的实际需求,进行爬取,获取整个网页,具备很强的自定义性特点[1]。 2 相关技术 2.1 爬虫技术 网络爬虫[2](WebCrawler),是一种按照一定的规则,自动提取Web网页的应用程序或者脚本,工作原理是基于http协议中请求与响应机制[3]。网络爬虫的优点在于,它可以将整个网页完整爬取下来,而且具有高度的自定义性[4]。客户端发送HTTP请求,将url提交给服务器端。服务器端根据ur1l的信息进行逻辑处理,并将需要的数据返回给客户端。由于请求的信息不止在一个url中,不得不建立一个url列表通过持续的发送请求进而得到全部的信息。返回的信息是HTML( Hypertext MarkupLanguage),通过BeautifuISoup,XPath,正则表达式等技术可以高效地抽取具有固定特征的页面信息,准确率很高。 2.2数据可视化 Python为我们提供了用来制作图表的库函数如.matplot-lib,pandas等。事实证明这些方法已经十分成功,而本文使用一个国产开源python库pyecharts,它是基于百度开源web可视化库Echarts,集合python语言自动生成Echarts图表。它不但可以绘制图表,还可以生成独立的HTML网页。具有良好的性能,并且使用方便。 3 数据获取 3.1 总体设计 首先打开Chrome浏览器,进入前程无忧的网页,打开开发者选项,找到其中的network,获取URL以及请求头中的head-ers[5]。本文利用request库的get方法模拟进入5ljob网站,在发送请求中添加python参数,进而可以得到整个网站关于python的所有岗位。我们得到的信息包括:公司名称、薪资水平、公司性质,以及岗位信息等等 3.2 爬虫模块的设计 第一步:我们定义一个名叫get_end_page的函数,在发送get请求后,得到HTML页面,利用XPath技术获取最后一页的字符串,即获取到该职位关键词总共在网站上有多少页数,并打印出来。XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言[6]。这样也可以对数据量有个心理预期。 第二步:由于页数众多,我们需要执行页面的跳转,这时候就需要我们知道每一页的URL。定义一个函数get_url,并将上一步得到的总共的页数传人函数参数。不难发现每一页的URL都是有相同的规律,通过这些网页链接,再继续寻找新的网页链接[7]。我们通过XPath技术获得整页的URL列表。部分代码如下: Def' get_url(self,count): num=0#用于判断是请求响应失败,还是页数到底了 while True: num+=1 text= response.content.decode(gb18030,) html= etree.HTML(text) detail_urls =html.xpath (”//div[@class=dw_table']/div[@class=el]//p/span/a/@href") if len(detail_urls)==0: #防止返回的是空数据,设置休眠 time.sleep(2) continue else: break return detail_urls #url列表 第三步:有了上一步得到的URL列表,再次利用request库的get方法实现网页的抓取,再利用XPath技术获取到相应岗位的具体信息。我们创建- csv文件并把数据保存进去,命名为“python招聘职位.csv”。 第四步:为了让代码看起来更加的简洁,本文采用封装的编码思想。把所有的步骤封装在一个类中,类名为PositionS-pider,爬虫的每个步骤定义为类的实例方法,类的初始化函数中定义headers,keyword,以及csv文件。这样可以做到代码的复用,符合“python之禅”的要求。 经以上数据获取之后,获得2313行招聘信息,数据如下图所示: 3.3 数据处理 由上一步得到的源数据,称之为“糙数据”。由于本文主要做的就是薪资、公司地址,和学历这几个维度的关系。所以,必须对这些数据进行清洗出来,得到用来可视化的数据集。对于薪资数据,源数据表现形式为:“**千/月,**万/月,**元/天”,本文采用字符串的findall方法将前面的数字提取出来,在进行换算,得到类似于15000这样的表现形式,还有的薪资是某个期间范围内,如:0.6-1万/月,本文采用的是该区间平均数的方式处理。以下是核心代码: wages=re.findaⅡ(,([.\d]+)一([.\d]+),a) wages= [《float(i[0])+ float(iLI]))/2)* 1000 对于学历这个维度,源数据就是:本科,硕士这样的形式,不需要进行处理,可以直接进行使用。工作的城市,源数据是类似于“上海一长宁区”,我们直接按照源数据的“一”字符分割,拿到前面的城市名。核心代码如下: def wish(a): a=a[0] a= a.split(一) return a[0] 4 分析过程 4.1工作经验与工资的分析 通过折线的变化可以明显看出,工作5年以后工资水平会有一个大的上升。工作3年之内,薪资涨幅不大。基本上有5年工作经验,可以拿到2万月薪。前三年的工作经验很重要,打好前三年的职场基础,在未来的职场生涯中就可以升职加薪。要求一年经验的岗位,平均薪资为:10361元;8-9年经验的岗位,平均薪资为:36614元。所有经验,平均薪资为:19918.43元。 4.2 工资与学历的分析 不难发现,学历的高低直接影响了工资多少,可以看到本科升到硕士,比专科升到本科工资涨幅更大。市场对更高级的人才需求更加旺盛,公司愿意花更大的代价引进人才。作为计算机专业的学生,提高自己的学历也是一件值得考虑的事情。同时,专科及以上学历的人员平均工资都达到了16264元,说明IT界整体薪资水平偏高,行业属于热门一类。大家在选专业以及自己未来的职业规划方面,选择python相关专业,就业前景还是很好的。 4.3 一线城市公司规模分析 如图4所示:上海地区的公司规模在四大一线城市中排名第一,行业大公司在上海分布的较多。对于求职人群来说,未来可以选择上海作为最佳求职地是更加明智的。 4.4 岗位信息的词云分析 本文通过Python中的Jieba模块来实现分析过程中对词频和关键词的统计[8]。Jieba分词是一个Python中文分词组件,本文采用Jieba分词技术[9]的精确模式技术,利用Jieba库中进20000个单词,进行前缀树扫描,从而达到快速查找的目的。 Jieba分词可以在岗位职责中分析出各种词出现的频率,使用Python下的wordcloud模块绘制这些词的词云。可以看出,开发工程师、软件工程师是市场需求比较大的岗位。同时要求有经验且本科以上学历。对于求职者而言,我们需要掌握的技能包括:Linux、MySQL、机器学习、算法等。词云图,可以直观地看到市场的要求,对求职者来说是很重要的参考。词云图如下: 5 结束语 本文基于爬虫的request方法,实现了一个爬取5ljob网站中招聘信息的爬虫。该爬虫以python相关的岗位为爬虫目标,通过python中的pyecharts数据处理和作图模块进行数据可视化展示。本文爬取到的数据符合预期要求,此外还对薪资与学历,工作经验的关系,大公司的分布地区,以及岗位要求进行分析,而且可视化展示分析的结果,对于求职者未来的职业规划有一定的指导意义。 参考文献: [1]刘晓知,基于Python的招聘网站信息爬取与数据分析[J].电子测试,2020(12): 75-76,110. [2]王大伟.基于Python的Web API自动化测试方法研究[J].电子科学技术,2015,2(5): 573-581. [3]冯佳捷,王瑞.中文分词技术对中文搜索引擎的查准率及查全率的影响[J].计算机光盘软件与应用,2013,16(6):184, 259. [4]王芳.基于Python的招聘网站信息爬取与数据分析[J].信息技术与网絡安全,2019,38(8): 42-46,57. [5]姜杉彪,黄凯林,卢昱江,等,基于Python的专业网络爬虫的设计与实现[J].企业科技与发展,2016(8): 17-19. [6]齐鹏,李隐峰,宋玉伟,基于Python的Web数据采集技术[J].电子科技,2012,25(11): 118-120. [7] John Coerzen.Python网络编程基础[M].莫迟,译,北京:电子工业出版社,2007. [8]舒德华.基于Scrapy爬取电商平台数据及自动问答系统的构建[D].武汉:华中师范大学,2016. [9]柳汨.基于HTML语言的网页制作浅卡斤[J].中小企业管理与科技(_上旬刊),2016(1): 258. 【通联编辑:谢媛媛】 作者简介:潘承佳(1996-),男,硕士,研究方向为数据分析;刘冬冬(1977-),男,副教授,研究方向为web应用与安全。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。