专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
51好读  ›  专栏  ›  马哥Linux运维

利用Python分析2018智联招聘全国各个城市的职位数排名

马哥Linux运维  · 公众号  · 运维  · 2018-01-27 08:00

正文

新年快到了,工作了一年你,躺在床上,退下一身的疲怠,是否也曾向往去到一个新的城市工作和生活呢?

那中国除了公认的北上广深工作机会最多以外,还有哪些城市也相对不错呢?

这时候我们可能会打开招聘网站开始选择城市然后来了解这个城市的职位情况.

那么一直秉持着人生苦短,我学python的我们,为什么不能用python来写一个分析2018全国各个城市的职位数排名的爬虫脚本呢?

这么一想十分可行啊,我们只需要找到一个目标招聘平台,然后通过用代码get到它的html正文,通过BeautifulSoup分析html来得到我们想要的数据,然后用matplotlib画出图表就可以了. (完整代码见本文末尾.)

于是立马动手,首先,既然我们是要分析全国范围内的所有城市的职位数,那么我们肯定首先要把所有的城市先列出来.然而这里想必地理学的再好的同学也不可能能把全国范围内所有的城市都能背下来吧,所以这一步,我们也是用python来爬取到全国范围内所有的城市名称.


1.爬取全国范围内所有的城市列表


通过一番查找,终于找到了智联上的这个页面:http://www.zhaopin.com/citymap.html



乍一看好像所有的城市名都是加粗的,右键查看一下源代码,果然,所有的城市名都被加上了 标签,类似于这样



那就简单了,我们直接获取该网页所有 标签里面的内容,就是标签名了.代码:



这样我们就获取到了所有的城市名,下一步我们就是要通过遍历这些城市名来查询某一个职业的职位数了.


2.遍历城市名,爬取对应城市的职位数.


这时候我们先打开智联的搜工作页面,输入职位名”android”,地址选择”烟台”,然后点击搜工作,这时候注意到,浏览器的地址栏变成了:



原来,智联的找工作这个按钮是执行了一个get请求而已,其中jl=和&kw=即分别代表要查找的城市和职位关键字,这时候先不要着急写代码,我们先来像上面说的一样来分析一下这个页面.

首先第一眼直接就找到了这样的字眼:



上面赫然显示着共84个职位满足条件,一切总是那么完美,不需要多余的任何操作,仿佛传到桥头自然直一样,这不正是我们想要找的职位数吗.然后右键选择查看源代码.恩,不得不说相当完美!



但这次数据格式好像比较复杂一点,我们如果仅仅简单用 84 标签包裹的内容来获取职位数的话好像已经行不通了,因为该网页很多的地方也使用了 标签,那怎么办呢,这时候我们只能使用正则表达式来匹配了.

修修改改,最终的正则表达式是这样的:(?!共 )[0-9]+(?= 个职位满足条件),其中的?!和?=则是让其所在的括号内的内容不放入匹配缓冲区里.

好,接下来我们就可以结合以上的内容来写代码了.



写完赶紧兴冲冲的run一下,…然而…



结果是运行没有报错也没有任何输出,左边的红色方块显示程序还在运行中,是的,它卡住了,停止运行再重新start还是会卡主,检查一下程序也没问题啊,what?辛辛苦苦才到达了这步救过竟然卡住了?这个时候我们不要着急,身为一个整天跟各种BUG打交道的程序员,一定要镇定,努力分析问题可能的原因,然后解决问题.

继续回到我们的这个问题上,排除我们程序本身的问题,会不会是对方的网站早知道我们会写python爬取,故意给我们加了限制呢?于是我们给我们的这次访问加上一个请求头试试,让我们的这次请求伪装成来自浏览器的访问.

ok,改代码,给这次get请求加上一个请求头:



运行:



果然这下就没问题了,程序瞬间就成功获取到了职位数为 84。

继续改动一下程序,遍历所有的城市列表,并根据key=城市名,value=职位数的格式将所有的城市职位数都获取来存到一个字典(Dictionary)里.



这样我们就得到了这样的数据:
{'北京': 4205, '上海': 2702, '广州': 1442, '深圳': 1872, '天津': 536 ...}


3.使用matplotlib根据数据画出图表


通过上面我们获取完了数据之后,直接用matplotlib库画出图表来就可以直观的看到各个城市的职位数情况了.



4.结果展示


程序运行:



运行结果:


还可以修改一下脚本中的职位名,查找其他职业:



代码地址: https://github.com/miqt/PythonLearn/blob/b3d33166303c3ec19eae3eedf13810af0234c9d9/ZhiLian.py

作者:痕迹

来源: http://imaster.top/





————近期开班————

《马哥教育Python自动化开发全能实战班》 是马哥教育联合阿里、豆瓣、大众点评等一线Python工程师,根据目前企业需求的Python开发人才进行了深度定制,加入大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论到 日志分析、 todolist任务管理系统、类Flask框架多人博客、 CMDB资产管理、 任务调度系统、 运维流程系统 六大项目实战,手把手教学让你从0开始蜕变成Hold住年薪30万的Python自动化开发人才。

10期面授班: 2018年03月05号 (北京)

11期 网络班: 2018年03月17号 网络







请到「今天看啥」查看全文


推荐文章
加措上师语录  ·  释怀,其实就在一瞬间
8 年前
经典人生感悟  ·  八句金言,很毒!你敢看吗?
8 年前
广东公共DV现场  ·  500位老乡免费回家 2017幸福大巴完美收官
8 年前
慈怀读书会  ·  这十句话,或许能让纠结的你豁然开朗
8 年前