python编程实践(一):统计智联招聘数据

统计智联招聘上,各个编程语言的在招岗位数量

思路:写爬虫 的第一步永远是先分析网页

1、用谷歌浏览器打开智联招聘官网。

2、右键“检查”->"Network"对响应数据抓包。

3、我们发现,岗位数据是用xhr加载的,json格式的数据。这样我们就可以直接向api发起请求获取数据包,因此可以跳过解析html标签这一步。

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、对比不同行业的平均薪资。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值