大数据招聘信息可视化

一、需求分析

1.1 深圳大数据招聘信息分析

数据源: 智联招聘
网站: https://sou.zhaopin.com
题目: 深圳大数据招聘分析

1.2 要求

  1. 爬取前5页
  2. 将数据保存到sqlite数据库中
  3. 按企业性质(民营、上市公司、国企等)汇总做饼图
  4. 按学历汇总做柱形图
  5. 详情页对专业技能做词云图
  6. 可自由发挥分析展示其他信息
  7. 可以通过网页访问结果
    参考步骤
    数据获取
    以深圳为例:在智联招聘网站上选择深圳->在搜素栏输入大数据->点击搜索

二、软件设计

表3-1 设计技术表

任务 采用的方法
数据的获取 Scrapy爬虫框架,json
数据的存储 Python的sqlite轻量级关系型数据库
数据的处理 Python的pandas库
数据的分析展示 Python的pyecharts可视化库
python服务器框 Flask

2.1 爬虫设计:

  • 所选技术栈:
    表3-2 实训爬虫技术表
技术 概念
Scrapy 数据的获取
Json 对Response返回的数据进行筛选
SQLite 进行数据的存储
  • 软件框架:
    简介:
    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如:Amazon Associates Web Services) 或者通用的网络爬虫。
    在这里插入图在这里插入图片描述片描述
    图3-1 scrapy工程目录树图
  • 分析思路
  1. 明确目标
    我们打算抓取https://sou.zhaopin.com/招聘网的深圳大数据行业的数据
    网站里的所有职位的名称、月薪、公司名称、学历、所需工作经验、详情页要求等
  2. 制作爬虫,数据的筛选
    我们具体分析出数据的来源,如说智联招聘是一个前后端分离的网站,通过用户点击,返回特定的json文件从而渲染网站,展示给用户。因此我们需要通过json分析特定URL返回的js文件。用键值提取关键数据;
    由于详情页的数据获取需要页面的跳转,且数据是一次性渲染展示,可通过Scrapy自带的Xpath选择器提取关键数据。
  3. 保存数据
    对数据的存储,我定义了pipelines管道,通过管道,将数据存储进轻量关系型数据库Sqlite。
  • 爬取的url及字段内容等
    从图3-2、图3-3中,通过谷歌浏览器分网站分析工具了解,网站与用户的交互的其大部分数据来源与一个json文件
    在这里插入图片描述
    图3-2 网页数据传输图
    在这里插入图片描述
    图3-3 网页返回的json文件数据图
    由此可得,该URL就是目标,由于我们是要爬取多页的数据,因此我将前三页的url对比分析

                                                 表3-3 前三页URL
    
页数 url
1 https://fe-api.zhaopin.com/c/i/sou?pageSize=90&cityId=765&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E5%A4%A7%E6%95%B0%E6%8D%AE&kt=3&_v=0.28055871&x-zp-page-request-id=fa894fc03f6c45eaa9fd0996be366e7a-1560240334056-500996&x-zp-client-id=06bafb27-d935-46c7-8278-206d6b355f21
2 https://fe-api.zhaopin.com/c/i/sou?start=90&pageSize=90&cityId=765&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E5%A4%A7%E6%95%B0%E6%8D%AE&kt=3&_v=0.28055871&x-zp-page-request-id=fa894fc03f6c45eaa9fd0996be366e7a-1560240334056-500996&x-zp-client-id=06bafb27-d935-46c7-8278-206d6b355f21
3 https://fe-api.zhaopin.com/c/i/sou?start=180&pageSize=90&cityId=765&workExperience=-1&education=-1&companyType=-1&employmentType=-1&jobWelfareTag=-1&kw=%E5%A4%A7%E6%95%B0%E6%8D%AE&kt=3&_v=0.28055871&x-zp-page-request-id=fa894fc03f6c45eaa9fd0996be366e7a-1560240334056-500996&x-zp-client-id=06bafb27-d935-46c7-8278-206d6b355f21

表中可得,从第二页开始URL的变化就在start=90、180,每一页都递增数为90
总结得出,变换start的数值可得到不同的页面。
2.2 数据存取:数据表设计、相关SQL语句等
1.数据表的设计
表3-4 数据表字段的设计

字段 标题 公司 公司类型 薪酬 经验 学历
类型 varchar varchar varchar varchar varchar varchar
字段 详细链接 工作地址 福利 技能 要求
类型 varchar varchar varchar varchar varchar

2.相关SQL语句

insert_sql = 'insert into bigDataZL values' \
                     ' ("{}","{}", "{}","{}","{}", "{}","{}","{}", "{}","{}","{}")'.format(
                                        item['title'],item['company'],item['company_type'],
                                        item['salary'],item['experience'],item['education'],
                                        item['detail_url'],item['address'],item['welfare'],
                                        item['skill'],item['claim']
                                    )
 createSql = "create table bigDataZL(" \
                        "标题 varchar(100)," \
                        "公司 varchar(100)," \
                        "公司类型 varchar(100)," \
                        "薪酬 varchar(100)," \
                        "经验 varchar(100)," \
                        "学历 varchar(100)," \
                        "详细链接 varchar(100) primary key ," \
                        "工作地址 varchar(100)," \
                        "福利 varchar(100)," \
                        "技能 varchar(100)," \
                        "要求 varchar(100))"

2.3 数据分析:数据处理流程等

查重处理:以详情链接字段为主键。
数据的读取:pandas读取数据表转为DataFrame数据类型

  • 企业性质汇总数据分析
    按企业性质分组统计,得到企业性质的统计值

  • 学历汇总数据分析
    按学历分组统计,得到学历的统计值

  • 详情页对专业技能做词云图数据分析
    详细页的岗位要求需要我们对关键字的提取,其中不乏一些无用信息,也需要我们剔除掉,如图3-6:
    在这里插入图片描述
    图3-7的处理,首先为定义一个专业词库列表,并且让每一条数据都只提取不重复的关键字,且定义键为单词,值为1的字典存进列表中,再将列表转为Pandas的DataFrame类型统计单词出现的频率

  • 薪酬汇总做数据分析
    为了更好地进行分析,我们要对薪资做一个预处理。由于其分布比较散乱,很多值的个数只有1。为了不造成过大的误差,根据其分布情况,可以将它分成【5k 以下、5k-10k、10k-20k、20k-30k、30k-40k、40k 以上】,为了更加方便我们分析,取每个薪资范围的中位数,并划分到我们指定的范围内。

  • 所需经验数据分析
    按学历列分组统计,得到学历的统计值

2.5 结果展示:所选择的Web框架、网页展示的方案设计等

  • 选择的Web框架:
    Flask是一个使用Python编写的轻量级 Web 应用框架。其WSGI工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 Flask使用 BSD 授权。
    Flask也被称为“microframework”,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
  • 网页展示的方案设计
    通过用户点击从而展示不同的分析内容,如图
    在这里插入图片描述

三、测试报告

3.1数据采集

爬虫爬取的每条数据图

爬虫爬取的每条数据图
爬虫爬取数据结果展示图

3.2可视化图表

大数据职业月薪柱形图
企业性质统计柱形图
学历统计柱形图
大数据技能词云图
大数据职位经验要求饼图

发布了9 篇原创文章 · 获赞 15 · 访问量 1438

猜你喜欢

转载自blog.csdn.net/weixin_40864434/article/details/95855884