python流浪图书馆_你都用 Python 来做什么?

谢邀,我用python主要是用来做数据分析可视化的。没有数据就像巧妇难为无米之炊,数据采集如果不是在数据库中那只能在python的刀下了。

讲一个案例,谈一个数据分析故事。

爬取拉勾网关于任何一个职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示。

一、数据准备

随便搜索一个岗位,例如BI工程师,然后右键点击F12使用检查功能查看网页源代码,当我们点击下一页观察浏览器的搜索栏的url并没有改变,这是因为拉勾网做了反爬虫机制, 职位信息并不在源代码里,而是保存在JSON的文件里,因此我们直接下载JSON,并使用字典方法直接读取数据。即可拿到我们想要的职位相关的信息。

待爬取的BI工程师职位信息如下:

为了能爬到我们想要的数据,我们要用程序来模拟浏览器来查看网页,所以我们在爬取的过程中会加上头信息,头信息也是我们通过分析网页获取到的,通过网页分析我们知道该请求的头信息,以及请求的信息和请求的方式是POST请求,这样我们就可以该url请求拿到我们想的数据做进一步处理.爬取网页信息代码如下:

import requests

import csv,time

url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'

def get_cookie():

cookie = requests.get('https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

},allow_redirects=False).cookies

return cookie

def put_into(page,kd):

headers = {

'Host': 'www.lagou.com',

'Origin': 'https://www.lagou.com',

'Referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'

}

json = {

'first': 'true',

'pn': str(page),

'kd': str(kd)

}

response = requests.post(url=url, headers=headers, data=json, cookies=get_cookie())

response.encoding = response.apparent_encoding

html = response.json()['content']['positionResult']['result']

savedata(html,kd)

def savedata(html,kd):

f = open(kd + '.csv', mode="a+",newline='',encoding='utf-8-sig')

csv_write = csv.writer(f)

csv_write.writerow(['职位名称', '公司名称', '公司规模', '城市', '薪资待遇', '工作经验', '是否全职', '学历要求', '公司福利', '发布时间'])

for i in range(len(html)):

positionName = html[i]['positionName'] # 职位名称

companyFullName = html[i]['companyFullName'] # 公司名称

companySize = html[i]['companySize'] # 公司规模

salary = html[i]['salary'] # 薪资待遇

city = html[i]['city']

workYear = html[i]['workYear'] # 工作经验

jobNature = html[i]['jobNature'] # 是否全职

education = html[i]['education'] # 学历要求

positionAdvantage = html[i]['positionAdvantage'] # 公司福利

lastLogin = html[i]['lastLogin'] # 发布时间

# print(positionName,companyFullName,companySize,salary,city,workYear,jobNature,education,positionAdvantage,lastLogin)

csv_write.writerow([positionName, companyFullName, companySize, city, salary, workYear, jobNature, education, positionAdvantage,lastLogin])

f.close()

if __name__ == '__main__':

kd = str(input('请输入您想爬取的职业方向的关键词:'))

for page in range(2,31):

put_into(page,kd)

print('第'+str(page-1)+'页爬取成功!')

time.sleep(2)

输入你想要查取的岗位:

二、数据清洗

1、城市

拿到csv文件是只有公司名,没有城市名的,于是用了excel函数lookup做了一个匹配:

在D1-D20中输入常用的城市名

公式:在B1单元格中输入下列公式:=LOOKUP(32767,FIND(D$1:D$20,A1),D$1:D$20)。

2、薪水

将CSV文件数据导入FineBI中(新建数据链接,建立一个分析业务包,然后导入这张excel表)。因为薪水是以xxK-xxk(还有一些类似校招/薪资面议的数据)的形式进行存储的,我这边使用FineBI新增公式列(类似excel函数)将这些字符进行分割:

薪水下限(数值): indexofarray ( split (salary,"k-") ,1)

薪水上限(含K字符):indexofarray( split(salary,"k-") ,2)

薪水上限(数值):left( 薪水上限(文本),len(薪水上限(文本))-1 )

求一下平均薪水

3.脏数据清洗:

浏览了一下数据,没有大问题,如果有一些BIM之类的过滤掉即可,不得不说拉勾的搜索还是很精准的。

三、数据可视化

数据可视化可以说是很简单了,拖拽要分析的数据字段即可。

但是这里用finebi分析要理解一个思路。常规我们用excel做分析或者说做图表,是先选用钻则图表然后设定系列、数值。这里没有系列和数值的概念,只有横轴和竖轴。拖入什么字段,该字段就以该轴进行扩展,至于图表嘛,finebi会自动判别推荐。最后展示:

四、分析结果

1、目前BI工程师岗位在拉勾招聘网站的平均薪资为20.61K,主要薪水区间大概在15-20K和大于25K,而这个薪资对应的年限大致在3年以上,本科学历。相关工作需求总数为301个(仅仅为某一天的招聘需求数据)。

2、从城市岗位需求数量分布来看,BI工程师需求主要集中在北京、上海、深圳、广州区域;各城市BI工程师平均薪水方面,去除岗位需求量较少的城市来看,国内排在前面的分别为北(24.57K)、上海(19.81)、杭州(18.75K)、深圳(18.60K)、广州(16.94K)。

3、从工作年限的平均薪水和岗位需求数量来看,工作5-10年的资深BI工程师的平均薪水可以达到27K以上(朝资深BI工程师方向奋斗!!!1年以下年限的计算出来的平均薪水虽然为22.17K,但是由于样本量只有3个,所以参考意义不大),也间接证明了一年内跳槽不好意思市场上没有你的岗位,工作需求最多的为3-5年的,平均薪水为21.24K。

4、从学历方面来看,最低学历需求主要以本科/大专为主,本科和大专学历要求的平均薪资分别为21.86和14.34K(感觉差距还是很大的,有机会提升学历一定不要放过),硕士学历需求很少。

5、看了一些高薪的招聘企业,最高的可以给到40K~60K的薪酬水平,其中主要是互联网、IT类公司为主。

恍然大悟,清晰明了~知识就是财富,撸起袖子加油干吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值