为帮女神找工作,我用Python爬了拉勾网

干货 2年前 (2018-03-12) 878 人围观 0

爬虫目标

没错,女神就是我老婆,准备转行运营,不过在我发这篇文章之前,女神就已经拿到offer了,前后用了不到一个星期,真是神速。
言归正传,本文用Python爬取了拉勾网运营相关的职位,并利用Excel图表,简要分析了运营岗位的招聘数量、行业分布、薪资水平,经验和学历要求等基本情况。文章的前半部分主要是爬虫代码,后半部分是对爬取结果的分析。

第一部分:Python爬虫代码

分析的前提是获取有用的数据,Python爬虫是获取网络数据的利器。对于Python这样一门语言,很多朋友的兴趣,始于爬虫,爬爬豆瓣、链家、京东、淘宝、招聘网站等信息,觉得挺有意思。我学习Python的目主要是用它来做数据分析,也包括一些简单的数据爬取。
但我对Python的兴趣缘起,不是爬虫,而是想在除了SAS之外,尝试一个新的工具,一门新的编程语言。正如那句名言,“人生苦短,我用Python”,它的确比较简洁,能干很多事,而且不需要太“循规蹈矩”。

 

以上两步是爬取前的准备工作。当然,还有一个非常重要的环节,那就是对所要爬取的网页进行分析。拉勾网的结构较为简单,通过浏览器查看网页源码,找到需要爬取的职位分类目录的标签位置,然后编写提取信息的函数,可以利用BeautifulSoup、Xspath,或者正则表达式,来进行文本信息的提取。本文使用的是正则表达式。
职位目录,只用爬一次即可。如果只爬取某个岗位的职位列表,也可以直接爬取具体网页的职位列表,而不用再爬整个目录。在下面的第4步中,也可以不用事先爬取职位列表的页数,可以从第一页开始,如果Error就跳过,从下一个岗位的第一页开始,继续爬取。

 


 

接下来就是爬取具体的职位列表了。为避免反爬,每一次爬取之间尽量间隔较长时间,比如随机1-3分钟。但这样整个爬取的时间也会非常长,不过没关系,让程序它自己去跑吧。
数据分析师、程序员等,也许就是这样一种人,虽然他已经休息了,打卡下班了,但是他的代码还在继续工作,他的模型还在自动运算。我认为这是一群很酷的人,尤其是那些可以将工作尽可能自动化的人。
我个人使用SAS多一点,SAS宏帮助我提高了效率,节省了很多时间。作为数据分析师,经常积累一些可以自动化处理的、提高效率的、化繁为简的编程技巧,非常重要。

 

整个爬取代码如上。对于Python,我还是个菜鸟,还在渐进学习中,就本文的爬虫而言,不仅代码较多,而且爬取的速度也非常慢,后续还可以进一步优化,比如通过函数封装功能、通过爬虫框架进行爬取、使用代理IP池以防止反爬,将爬取的数据写入本地MySQL数据库等。

第二部分:整理和分析数据

受限于爬取效率,以上只爬取了86页,而每页的职位列表约显示14条记录信息,这样总计大约是1200条记录。其中产品运营、数据运营、用户运营、活动运营、内容运营、新媒体运营等占比均为12%左右,品类运营、网店运营、商家运营等占比较少。
通过筛选、整理,最终得到如下字段:
    position_id 职位ID
 
    company_name 公司名称
 
    position_title 职位名称
 
    job_url 职位链接
 
    job_src_key 职位分类ID
 
    post_time 发布时间
 
    salary 薪资范围
 
    experience 工作经验和学历
 
    company_url 公司简页链接
 
    company_type 公司类别
 
    business 公司行业
 
    job_label 职位标签
 
    city 工作城市
 
    district 工作城市区域
 
    growth_type 公司融资情况
 
    seniority 工作经验
 
    educational 学历
 
    salary_left 薪资范围下限
 
    salary_right 薪资范围上限
 
    salary_avg 平均薪资
 
    class_main 职位大分类
 
    position 职位小分类
 
    url 职位小分类链接
这些字段中的部分将用于接下来的分析。比如行业,地区,学历,工作经验,薪资,这些是比较关键的字段。此外,还可以做一些有意思的分析,例如对职位标签进行词频统计,然后制作词云。
1、运营岗位需求最多的前十个公司是哪些?
如图,美团显然最多。
2、运营岗位需求最多的前十个城市是哪些?
毫无疑问,北上广深比较靠前,杭州的运营岗位需求也不少。而对于运营岗位的平均薪资来说,北京最高,深圳次之,接下来是上海和杭州,差别不太大,另外成都的平均薪资也相关较高。
3、学历和平均薪资有什么关系?
学历和平均薪资对等,学历越高,无论是平均薪资,还是薪资范围的上下限,也是越高的。不过对运营岗位,学历的要求似乎并不高,从岗位招聘数量可以看出,硕士学历需求数量实在太少了。如果爬取的是数据挖掘相关的岗位,也许硕士的需求数量就会相对多一些。
4、工作年限和平均薪资有什么关系?
工作经验年限也是和平均薪资对等的,工作经验年限越长,平均薪资越高。10年经验以上的数量很少,1-3年经验的最多,其次是3-5年的。毕竟互联网公司的平均年龄都比较低,大多26、27岁上下,工作超过5年的,一般也都积累了一些圈子,人脉,可以借助这些转换工作,包括一些猎头。
下面这张表,是工作经验年限和学历的交叉表,其中填入的数字是平均薪资。由于硕士学历、工作10年以上的数量较少,不具有代表性,表格中标注为了灰色;学历和经验不限的,也不太有参考价值。有参考性的部分,以黄色标出。如果你恰好是做运营的,那么可以大概参考下。
5、对于运营岗来说的热门行业有哪些?
最后,下面这张图是不同行业的运营岗位的需求数量和平均薪资水平。为了便于作图比较,对职位数量和平均薪资水平,分别做了最大最小值标准化处理,然后进行绘图。
那些招聘需求量大,而且平均工资高的行业,往往被认为是热门行业。这些热门行业包括O2O、金融(主要是P2P,而非传统金融机构)、电商、教育、文娱。再说明下,这里是从运营岗位出发,进而分析判断,因此虽然游戏行业的运营岗位需求相对较少,但并不能说明游戏行业就不是热门行业。

作者:Zevin
公众号:赛仕数据圈