用python分析智联招聘数据
最近在研究python,不得不承认python是门强大的语言,拥有丰富的类库,为开发者节省了大量的时间精力。听闻python很适合做数据分析工作,我也尝试着用python写一些简单的数据统计、分析脚本。以下案例是统计智联招聘上,各个编程语言的在招岗位数量。
思路:
1、用谷歌浏览器打开智联招聘官网。
2、右键“检查”->"Network"对响应数据抓包。
3、我们发现,岗位数据是用xhr加载的,json格式的数据。这样我们就可以直接向api发起请求获取数据包,跳过解析网页。
4、分析接口的请求头、请求参数、响应。请求参数包括一些查询参数、分页参数、位置信息、用户信息等。其中比较重要的几个查询参数,cityId:城市;kw:搜索关键字。返回的json数据包里可以找到我们需要的数据。numFound:总数。numTotal:能获取的总数,不知道智联出于什么考虑,我们最多只能查看到1000条招聘数据,尽管总数返回是7579,莫非要充钱才能看到全部?results:招聘详情(薪资/工作地点/公司名称/学历要求/公司类型......)。这里我们只获取深圳的招聘数据,取numFound进行对比。
5,调用pygal库绘图。
以下是代码:
"""导入requests模块,关于该模块的更多用法,参考官方文档:
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html"""
import requests
import pygal
import time
from urllib.parse import quote
def getData(keyword,page_size=1000):
keyword = quote(keyword)
url = "https://fe-api.zhaopin.com/c/i/sou?pageSize="+str(page_size)+\
"&cityId=765&salary=0,0&workExperience=-1&education=-1&companyType\
=-1&employmentType=-1&jobWelfareTag=-1&kw="+keyword+"&kt=3&\
=0&_v=0.65669009&x-zp-page-request-id=c29059bcab414d28a02023881dd\
06e77-1552615114369-110766"
headers = {
'user-agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit\
/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
'Referer':'https://sou.zhaopin.com/?jl=765&sf=0&st=0&kw=java&kt=3',
'Origin':'https://sou.zhaopin.com',
'Accept':'application/json, text/plain, */*',
}
r = requests.get(url,headers = headers)
# print(r.url)
# exit()
if r.status_code==200:
data = r.json()
return data['data']['numFound']
else:
print("获取关于"+str(keyword)+"的信息失败")
print("code:",r.status_code)
def draw(data):
bar_chart = pygal.Bar()
bar_chart.add("Sort by language",list(data.values()))
bar_chart.title = "深圳市热门开发语言在招职位统计,统计时间:"+\
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
bar_chart.x_labels = list(data.keys())
bar_chart.render_to_file("zhilian_jobs_count.svg")
count = {
"java":0,
"php":0,
"python":0,
"c语言":0,
"c++":0,
"android":0,
"前端":0,
"go语言":0,
}
languages = count.keys()
for lan in languages:
total_num = getData(lan,page_size=1)
count[lan] = total_num
#print(count)
draw(count)
最后在浏览器里打开zhilian_jobs_count.svg查看:
可以看到,在招职位中依然是java最多。
扩展:
1、对比各个语言在招岗位的平均薪资。
2、改变cityId参数,对比各个城市的招聘人数。
3、对比不同行业的平均薪资。