• 查看前程无忧Python岗及一些可视化


    用Python查看一下前程无忧的Python岗,并尝试做一些可视化以直观化。

    """
        Python爬取前程无忧,获取最新招聘薪资福利
    """
    import json
    import pprint
    import random
    
    import requests
    import re
    import csv
    import time
    
    # 打开文件
    f = open('20211102前程无忧python岗位.csv', mode='a', encoding='utf-8-sig', newline='') # utf-u-sig打开的时候才不会乱码
    # 写入器
    csvWriter = csv.DictWriter(f, fieldnames=[
        '标题',
        '公司名称',
        '城市',
        '薪资',
        '招聘信息',
        '公司属性',
        '公司规模',
        '企业性质',
        '招聘发布日期',
        '公司详情页',
        '招聘详情页',
    ])
    # 将上面的内容写入到表头
    csvWriter.writeheader()
    
    # 请求头
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36',
    }
    
    # 多页读取
    for page in range(1, 11):
        time.sleep(random.randint(2, 10))
        url = f'https://search.51job.com/list/010000%252c020000%252c030200%252c040000%252c090200,000000,0000,00,9,99,python,2,{page}.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='
        # 开始请求网页
        responses = requests.get(url=url, headers=headers)
        # print(responses.text)
        # 解析网页数据
        htmlData = re.findall('window.__SEARCH_RESULT__ = (.*?)</script>', responses.text, re.S) #re.S表示忽略空白
        # print(htmlData)
        # print(type(htmlData)) # list
        # 将上面的htmlData转换成json数据方便读取
        json_data = json.loads(htmlData[0]) # 因为是列表,我们取第一项
        # print(json_data)
        # pprint.pprint(json_data) # 格式化输出一下
        # 开始逐项读取
        for i in json_data['engine_jds']:
            # pprint.pprint(i)
            workAreaText = i['workarea_text']
            workCity = workAreaText[0:2] # 城市,用来做数据可视化
            issueyear = i['issuedate'][0:4] # 年份,用来做数据可视化
            issueMonth = i['issuedate'][5:7] # 月份,用来做数据可视化
            issueHour = i['issuedate'][11:13] # 小时,用来做数据可视化
            dit = {
                '标题':i['job_name'],
                '公司名称':i['company_name'],
                '城市':i['workarea_text'],
                '薪资':i['providesalary_text'],
                '招聘信息':'|'.join(i['attribute_text']),
                '公司属性':i['companytype_text'],
                '公司规模':i['companysize_text'],
                '企业性质':i['companytype_text'],
                '招聘发布日期':i['issuedate'],
                '公司详情页':i['company_href'],
                '招聘详情页':i['job_href'],
            }
    
            # 写入到csv文档
            csvWriter.writerow(dit)
    
    # 数据可视化方向

    数据存储完后是以下这样的:

     可视化方向:

      1,城市统计;

      2,薪资定位;

      3,公司规模;

      4,公司性质;

      5,城市分布热力图

  • 相关阅读:
    Spring3:AOP
    Spring2:bean的使用
    Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse
    Vue.js——60分钟组件快速入门(上篇)
    vue父子组件嵌套的时候遇到
    Vue.js——60分钟快速入门
    [Vue warn]: Cannot find element: #app
    关于RabbitMQ以及RabbitMQ和Spring的整合
    spring集成多个rabbitMQ
    RabbitMQ-从基础到实战(5)— 消息的交换(下)
  • 原文地址:https://www.cnblogs.com/mafu/p/15497937.html
Copyright © 2020-2023  润新知