行业凛冬大厂裁员:Python就业前景到底怎么样?爬虫拉钩招聘分析一波

Posted 学习Python的第1024天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行业凛冬大厂裁员:Python就业前景到底怎么样?爬虫拉钩招聘分析一波相关的知识,希望对你有一定的参考价值。

缘起

事情的起因是这样的,某个风和日丽的下午… 习惯性的打开知乎准备划下水,看到一个问题刚好邀请回答:

加之年末各种爆出的大厂裁员的信息,于是就萌生了采集下某招聘网站Python岗位招聘的信息,看一下目前的薪水和岗位分布,分析一波就业的方向和前景,说干就干。

第一步:数据采集

先说下数据采集过程中遇到的问题,首先请求头是一定要伪装的,否则第一步就会给你弹出你的请求太频繁,请稍后再试,其次网站具有多重反爬策略,解决方案是每次先获取session然后更新我们的session进行抓取,最后拿到了想要的数据。

Chrome浏览器右键检查查看network,找到链接https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false

可以看到返回的数据正是页面的Python招聘详情,于是我直接打开发现直接提示"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"124.77.161.207","state":2402,机智的我察觉到事情并没有那么简单


真正的较量才刚刚开始,我们先来分析下请求的报文,

可以看到请求是以post的方式传递的,同时传递了参数

datas = 
            'first': 'false',
            'pn': x,
            'kd': 'python',
        

同时不难发现每次点击下一页都会同时发送一条get请求


经过探索,发现这个get请求和我们post请求是一致的,那么问题就简单许多,整理一下思路

【关键词】:python搜索范围】:全国 【数据时效】:2019.05.05

#!/usr/bin/env python3.4
# encoding: utf-8
"""
Created on 19-5-05
@title: ''
@author: Xusl
"""
import json
import requests
import xlwt
import time

# 获取存储职位信息的json对象,遍历获得公司名、福利待遇、工作地点、学历要求、工作类型、发布时间、职位名称、薪资、工作年限
def get_json(url, datas):
    my_headers = 
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/72.0.3626.119 Safari/537.36",
        "Referer": "https://www.lagou.com/jobs/list_Python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=",
        "Content-Type": "application/x-www-form-urlencoded;charset = UTF-8"
    
    time.sleep(5)
    ses = requests.session()    # 获取session
    ses.headers.update(my_headers)  # 更新
    ses.get("https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=")
    content = ses.post(url=url, data=datas)
    result = content.json()
    info = result['content']['positionResult']['result']
    info_list = []
    for job in info:
        information = []
        information.append(job['positionId'])  # 岗位对应ID
        information.append(job['city'])  # 岗位对应城市
        information.append(job['companyFullName'])  # 公司全名
        information.append(job['companyLabelList'])  # 福利待遇
        information.append(job['district'])  # 工作地点
        information.append(job['education'])  # 学历要求
        information.append(job['firstType'])  # 工作类型
        information.append(job['formatCreateTime'])  # 发布时间
        information.append(job['positionName'])  # 职位名称
        information.append(job['salary'])  # 薪资
        information.append(job['workYear'])  # 工作年限
        info_list.append(information)
        # 将列表对象进行json格式的编码转换,其中indent参数设置缩进值为2
        # print(json.dumps(info_list, ensure_ascii=False, indent=2))
    # print(info_list)
    return info_list

def main():
    page = int(input('请输入你要抓取的页码总数:'))
    # kd = input('请输入你要抓取的职位关键字:')
    # city = input('请输入你要抓取的城市:')

    info_result = []
    title = ['岗位id', '城市', '公司全名', '福利待遇', '工作地点', '学历要求', '工作类型', '发布时间', '职位名称', '薪资', '工作年限']
    info_result.append(title)
    for x in range(1, page+1):
        url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
        datas = 
            'first': 'false',
            'pn': x,
            'kd': 'python',
        
        try:
            info = get_json(url, datas)
            info_result = info_result + info
            print("第%s页正常采集" % x)
        except Exception as msg:
            print("第%s页出现问题" % x)

        # 创建workbook,即excel
        workbook = xlwt.Workbook(encoding='utf-8')
        # 创建表,第二参数用于确认同一个cell单元是否可以重设值
        worksheet = workbook.add_sheet('lagouzp', cell_overwrite_ok=True)
        for i, row in enumerate(info_result):
            # print(row)
            for j, col in enumerate(row):
                # print(col)
                worksheet.write(i, j, col)
        workbook.save('lagouzp.xls')

if __name__ == '__main__':
    main()

当然存储于excel当然是不够的,之前一直用matplotlib做数据可视化,这次换个新东西pyecharts

2.了解pyecharts

pyecharts是一款将python与echarts结合的强大的数据可视化工具,包含多种图表

  • Bar(柱状图/条形图)
  • Bar3D(3D 柱状图)
  • Boxplot(箱形图)
  • EffectScatter(带有涟漪特效动画的散点图)
  • Funnel(漏斗图)
  • Gauge(仪表盘)
  • Geo(地理坐标系)
  • Graph(关系图)
  • HeatMap(热力图)
  • Kline(K线图)
  • Line(折线/面积图)
  • Line3D(3D 折线图)
  • Liquid(水球图)
  • Map(地图)
  • Parallel(平行坐标系)
  • Pie(饼图)
  • Polar(极坐标系)
  • Radar(雷达图)
  • Sankey(桑基图)
  • Scatter(散点图)
  • Scatter3D(3D 散点图)
  • ThemeRiver(主题河流图)
  • WordCloud(词云图)

用户自定义

  • Grid 类:并行显示多张图
  • Overlap 类:结合不同类型图表叠加画在同张图上
  • Page 类:同一网页按顺序展示多图
  • Timeline 类:提供时间线轮播多张图

另外需要注意的是从版本0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表(Geo、Map),可自行安装对应的地图文件包。

  1. 全球国家地图: echarts-countries-pypkg (1.9MB): 世界地图和 213 个国家,包括中国地图
  2. 中国省级地图: echarts-china-provinces-pypkg (730KB):23 个省,5 个自治区
  3. 中国市级地图: echarts-china-cities-pypkg (3.8MB):370 个中国城市

也可以使用命令进行安装

pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg

3.数据可视化(代码+展示)

  • 各城市招聘数量
from pyecharts import Bar

city_nms_top10 = ['北京', '上海', '深圳', '成都', '杭州', '广州', '武汉', '南京', '苏州', '郑州', '天津', '西安', '东莞', '珠海', '合肥', '厦门', '宁波',
                  '南宁', '重庆', '佛山', '大连', '哈尔滨', '长沙', '福州', '中山']
city_nums_top10 = [149, 95, 77, 22, 17, 17, 16, 13, 7, 5, 4, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]

bar = Bar("Python岗位", "各城市数量")
bar.add("数量", city_nms, city_nums, is_more_utils=True)
# bar.print_echarts_options() # 该行只为了打印配置项,方便调试时使用
bar.render('Python岗位各城市数量.html')  # 生成本地 HTML 文件

  • 地图分布展示(这个场景意义不大,不过多分析)
from pyecharts import Geo

city_datas = [('北京', 149), ('上海', 95), ('深圳', 77), ('成都', 22), ('杭州', 17), ('广州', 17), ('武汉', 16), ('南京', 13), ('苏州', 7),
     ('郑州', 5), ('天津', 4), ('西安', 4), ('东莞', 3), ('珠海', 2), ('合肥', 2), ('厦门', 2), ('宁波', 1), ('南宁', 1), ('重庆', 1),
     ('佛山', 1), ('大连', 1), ('哈尔滨', 1), ('长沙', 1), ('福州', 1), ('中山', 1)]
geo = Geo("Python岗位城市分布地图", "数据来源拉勾", title_color="#fff",
                  title_pos="center", width=1200,
                  height=600, background_color='#404a59')
attr, value = geo.cast(city_datas)
geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",
                symbol_size=15, is_visualmap=True)
geo.render("Python岗位城市分布地图_scatter.html")

geo = Geo("Python岗位城市分布地图", "数据来源拉勾", title_color="#fff",
                  title_pos="center", width=1200,
                  height=600, background_color='#404a59')
        attr, value = geo.cast(city_datas)
        geo.add("", attr, value, type="heatmap", visual_range=[0, 10], visual_text_color="#fff",
                symbol_size=15, is_visualmap=True)
        geo.render("Python岗位城市分布地图_heatmap.html")


  • 各个城市招聘情况
from pyecharts import Pie

city_nms_top10 = ['北京', '上海', '深圳', '成都', '广州', '杭州', '武汉', '南京', '苏州', '郑州']
city_nums_top10 = [149, 95, 77, 22, 17, 17, 16, 13, 7, 5]
pie = Pie()
pie.add("", city_nms_top10, city_nums_top10, is_label_show=True)
# pie.show_config()
pie.render('Python岗位各城市分布饼图.html')

北上深的岗位明显碾压其它城市,这也反映出为什么越来越多的it从业人员毕业以后相继奔赴一线城市,除了一线城市的薪资高于二三线这个因素外,还有一个最重要的原因供需关系,因为一线岗位多,可选择性也就比较高,反观二三线的局面,很有可能你跳个几次槽,发现同行业能呆的公司都待过了…

  • 薪资范围

由此可见,python的岗位薪资多数在10k~20k,想从事Python行业的可以把工作年限和薪资结合起来参考一下。

就业寒冬来临,我们需要的是理性客观的看待,而不是盲目地悲观或乐观。从以上数据分析,Python的就业前景还是很好的,仍旧可以入坑,自己在学习Python的过程中一定要尝试独立去做一个完整的项目,爬虫也好,数据分析也好,亦或者是开发,都要尝试独立去做一套系统,在这个过程中培养自己思考和解决问题的能力。持续不断的学习,才是对自己未来最好的投资,也是度过寒冬最正确的姿势。

人生苦短,我学Python

Python语法清晰明快,简单易学。对于零基础想要入门编程行业的小白十分友好。

这也是Python如此普及的重要原因。

任何知识都是基础入门比较快,但是想要达到企业级开发的要求,需要一个循序渐进的过程。

下面就给大家分享一套系统的企业级Python零基础教程。强烈建议收藏!

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码【免费获取

学习资源推荐

学习资源是学习质量和速度的保证,因此找到高质量的学习资源对我们来说也是非常重要的。以下列出的学习资源不分排名,都是好资源:

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码【免费获取

文末

这几年大家抱怨的最多的一个词就是卷,觉得竞争太激烈太累了。但其实这本身就是由经济规律决定的,前几年计算机还是劝退专业的时候,我亲眼看到学院里1/3的人想要转专业出去。现在互联网火热,又看到大批的人击破了脑袋想要进来……

天下熙熙皆为利来,天下攘攘皆为利往,利润丰腴的地方自然竞争激烈,这本身就是自然规律。既然已经做了选择,便好好努力吧。与其搬弄口舌抱怨一通,倒不如静下心来好好学点东西。毕竟抱怨不会让你变得更强,但学习会,你们说呢?

以上是关于行业凛冬大厂裁员:Python就业前景到底怎么样?爬虫拉钩招聘分析一波的主要内容,如果未能解决你的问题,请参考以下文章

凛冬已至:大厂裁员浪潮,基础福利大砍,行业饱和,大龄程序员该如何自处

阿里腾讯裁员最高30%?计算机行业前景到底如何...

阿里腾讯裁员最高30%?计算机行业前景到底如何...

凛冬将至,亚马逊上演裁员版“鱿鱼游戏”

软件测试行情前景,你可以做测试多久?到底能干到多少岁?

当下的网络安全行业前景到底怎么样?还能否入行?