前言:面临毕业季的到来,毕业生一边准备论文答辩、拍毕业照、和同学们聚餐作别,也一边在找工作,从舒适自在的大学毕业了就要走上职场,融入到“社会”这个更大家庭中,自己要独立生活了,在梦想的道路上奋斗前进。
虽然金三银四已经过去,但还在找工作你的别灰心,工作职位大把的有,只要你够努力,够拼搏,信息更广,能找到自己满意的工作。
学习了Python知识,一方面是喜欢编程,更加是找到一个好工作,薪资高,在这年轻奋斗的年纪多学一些知识,多赚点钱。
以拉勾云最新招聘信息为例,咱就爬虫分析Python相关岗位数据,看看目前的岗位和薪资以及城市分布等信息。
输入Python 进行职位查询,也可以根据自己的需求,在相关搜索中搜索python爬虫、Python数据分析等指纹
接下来分析网址内容,
急急急
(1)导包
import json
import requests
import xlwt
import time
(2)获取存储职位信息的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()
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 = []
(3)获取职位要求,城市、公司名字、福利待遇以及工作要求等信息。
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)
# print(info_list)
return info_list
(4)
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')
(5)主函数
if __name__ == '__main__':
main()
pyecharts 是一款将 python 与 echarts 结合的强大的数据可视化工具,包含多种图表:
(1)柱状图
from pyecharts import Bar
city_nms_top10 = ['北京', '上海', '深圳', '成都', '杭州', '广州', '武汉', '南京', '苏州', '郑州', '天津', '西安', '东莞', '珠海', '合肥', '厦门', '宁波',
'南宁', '重庆', '佛山', '大连', '哈尔滨', '长沙', '福州', '中山']
city_nums_top10 = [130, 110, 107, 52, 37, 27, 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_top10, city_nums_top10, is_more_utils=True)
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 = [139, 107, 77, 22, 17, 17, 16, 13, 7, 5]
pie = Pie()
pie.add("", city_nms_top10, city_nums_top10, is_label_show=True)
pie.render('Python 岗位各城市分布饼图.html')