Python爬虫最新拉勾网Python岗位招聘信息

Python爬虫最新拉勾网Python岗位招聘信息

前言:面临毕业季的到来,毕业生一边准备论文答辩、拍毕业照、和同学们聚餐作别,也一边在找工作,从舒适自在的大学毕业了就要走上职场,融入到“社会”这个更大家庭中,自己要独立生活了,在梦想的道路上奋斗前进。
虽然金三银四已经过去,但还在找工作你的别灰心,工作职位大把的有,只要你够努力,够拼搏,信息更广,能找到自己满意的工作。
学习了Python知识,一方面是喜欢编程,更加是找到一个好工作,薪资高,在这年轻奋斗的年纪多学一些知识,多赚点钱。
以拉勾云最新招聘信息为例,咱就爬虫分析Python相关岗位数据,看看目前的岗位和薪资以及城市分布等信息。

目标网址:https://www.lagou.com/

Python爬虫最新拉勾网Python岗位招聘信息_第1张图片输入Python 进行职位查询,也可以根据自己的需求,在相关搜索中搜索python爬虫、Python数据分析等指纹
Python爬虫最新拉勾网Python岗位招聘信息_第2张图片接下来分析网址内容,
Python爬虫最新拉勾网Python岗位招聘信息_第3张图片急急急
Python爬虫最新拉勾网Python岗位招聘信息_第4张图片

爬取过程

哈哈哈
Python爬虫最新拉勾网Python岗位招聘信息_第5张图片会尽快看看
Python爬虫最新拉勾网Python岗位招聘信息_第6张图片好几家
Python爬虫最新拉勾网Python岗位招聘信息_第7张图片

程序步骤

(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 文件

Python爬虫最新拉勾网Python岗位招聘信息_第8张图片(2)折线图
Python爬虫最新拉勾网Python岗位招聘信息_第9张图片(3)地图分布显示

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")

Python爬虫最新拉勾网Python岗位招聘信息_第10张图片Python爬虫最新拉勾网Python岗位招聘信息_第11张图片(4)饼图

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')

Python爬虫最新拉勾网Python岗位招聘信息_第12张图片

你可能感兴趣的:(Python)