想以后从事数据挖掘行业,但是想看看这个行业对于工作能力有什么样的要求,一般招聘的时候都需要什么有什么样的基础能力,所以就打算先爬取智联上关于数据挖掘的岗位的招聘要求及其职责,然后根据结巴分词,提取关键字,看看哪些词汇出现的频率比较高,这样就知道数据挖掘这个行业一般对于从业有什么样的要求的。当然提取出来的关键字肯定是有一些无用的信息,这个需要我们去进一步的甄别。
首先是爬取智联招聘的数据挖掘岗位的招聘要求,初始页如下图。
请求到这个页面的信息后对每一条的详情页进行继续的请求,以获得招聘的要求,因为我们只关注与招聘的要求所以对于其他的信息并没有提取。因为最近都在使用jupyterlab所以代码写的比较随意:

‘’‘首先是导入相关的库,请求头’‘’
import requests
from bs4 import BeautifulSoup
import re
from redis import StrictRedis
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0',}
job_url = StrictRedis(host='localhost', port=6379, db=0)####redis数据库,用于存放详情页的url,和招聘要求
base_url = 'https://fe-api.zhaopin.com/c/i/sou'
s=requests.Session()
def get_data(page,kw):####请求头page=page*30data={'start': page,'pageSize': '90','cityId': 635,'salary': '0,0','workExperience':'-1','education': '-1','companyType': '-1','employmentType': '-1','jobWelfareTag': '-1','kw': kw,'kt': '3','at': '10b87f09cc11471ba97a8ec59068315b','rt': '25fa7d33ce874ed78a44c894e33182be',' _v': '0.94232770','userCode': '719493971','x-zp-page-request-id': '5c873aecc7414997a182ee49cf59a08e-1548682114509-860029'}return data
##### kw=input('please input kw  :')
kw='数据挖掘'####因为只关注于数据挖掘岗位,所以就把kw固定了,实际可以根据需要进行输入。
# page=1
def get_basePage(page,kw):data=get_data(page,kw)r=s.get(url=base_url,headers=header,params=data)print(r.status_code)# print(r.text)r=r.json()results=r.get('data').get('results')# print(results)for info in range(len(results)):####获取详情页的urlnew_url=results[info].get('positionURL')job_url.sadd('new_url',new_url)  ####  详情页url加入redis中为new_url的集合中。‘’‘遍历多个详情页’‘’
for i in range(10):get_basePage(i,kw)
print('一共写入'+str(job_url.scard('new_url'))+'个url')‘’‘将岗位要求加入redis的info列表中,这个耗时比较长,因为我跑的时候没有出现过错误所以也没有加入异常处理,实际上应当加入异常处理,以防有些详情页出现一点问题’‘’import time
t1=time.time()
for i in range(job_url.llen('info')):job_url.lpop('info')
print(job_url.llen('info'))
while job_url.scard('new_url'):####若new_url集合不空的话new_url=job_url.spop('new_url')####拿出一个详情页的urlr=requests.get(url=new_url,headers=header)soup=BeautifulSoup(r.text,'lxml')many_info=soup.find('div',class_='job-detail')for i in many_info.find_all('p'):
#         print(i.text)if i.text:job_url.rpush('info',i.text)####将岗位要求加入redis的info列表中
print('加入第'+str(job_url.llen('info'))+'条信息成功')t2=time.time()
print('time'+' '*3+':'+str(t2-t1))

已经成功的将数据挖掘招聘要求写入了redis的info列表中,下一步就是利用结巴分词将招聘要求的关键字提取出来,并统计关键字出现的频率,以分析什么技能才是数据挖掘岗位所需要的技能。

import jieba
import time
import re
t1=time.time()
dic={}####用于存储各个关键字出现的频率。
while job_url.llen('info'):####若info列表不空。则进入while循环s=job_url.lpop('info') ####取出第一个信息s=s.decode('utf-8')info = jieba.cut(s,cut_all=False)####将招聘要求进行分词,提取关键字for i in info:if re.findall(r'[a-z,A-Z]{2,}',i):####如果是英文,就将其首部大写,其余小写(防止出现python/Python,明明是一个关键字却占两个键)i=i.capitalize()if i not in dic:####统计各个关键字出现的次数dic[i]=1else:dic[i]+=1
t2=time.time()
print(t2-t1,len(dic))

字典dic的结果如下图。


可以发现关键字里面有很多标点和特殊符号,我们可以将这些特殊符号和标点去掉,简单处理下这个字典,并且可以将其进行按照值排序。

import re
result=dict()
for k in dic:if re.findall(r'[\u4e00-\u9fa5]{2,}|[a-z,A-Z]{2,}',k):####匹配出大于两个字的中文或者英文result[k]=dic[k]s=sorted( result.items(),key=lambda p:p[1],reverse=True)##按照出现的次数进行排序


基本上来说已经找出数据挖掘要求的关键字了,但是这些好像都与工作要求无关,大部分是常用的词语,而不是工作要求的关键字,这只能自己观察找出与工作相关的关键字,看看哪些比较重要了,我们也可以保留英文的关键字,一般来说英文的关键字都是一些编程语言,或者是会使用的软件之类的。和工作要求比较贴近点。

import re
r1=dict()
for k in dic:if re.findall('[a-z,A-Z]{2,}',k): ####匹配英文r1[k]=dic[k]
r1=sorted( r1.items(),key=lambda p:p[1],reverse=True) ###排序


这样就可以看出来,在南京这边,智联的招聘数据挖掘的岗位的,公司普遍要求python,java,hadoop,spark,数据库这些。包括对中文那个高频词汇进行观察分析,可以看出数据挖掘这个岗位普遍来说都要求一些算法水平。大概也可以知道,在将机器学习的算法学的同时还需要对hadoop,spark等大数据处理平台的框架学习一下,对于数据库的一些知识也需要去了解。

数据挖掘招聘关键字分析相关推荐

  1. 用MapReduce对招聘数据处理分析+可视化

    对招聘数据处理分析并可视化 目录 前言 一.数据源和任务目标 二.具体实现 任务1.各学历平均工资 任务2.各城市平均工资走势 任务3.各岗位招聘数量占比分析 总结 前言 关于本次任务: 当我们择业, ...

  2. 计算机书籍-数据挖掘与预测分析

    书名:数据挖掘与预测分析(第2版) 作者:[美]Daniel T. Larose,Chantal D. Larose 出版社:清华大学出版社 出版时间:2017年02月 鼠标

  3. 基于‘BOSS直聘招聘信息’分析企业到底需要什么样的PHPer

    基于'BOSS直聘招聘信息'分析企业到底需要什么样的PHPer 前两篇文章都没看,好意思直接看结果? Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息 Pyhton爬虫实战 - 抓取 ...

  4. 《C关键字分析》之extern用法

    <C关键字分析>之extern用法 一.假设为三方提供库源码和头文件 1.共享库部分 sanf.c #include <stdio.h> int a; void hello() ...

  5. 《C关键字分析》之typedef与callback

    <C关键字分析>之typedef与callback 一.typedef定义函数指针类型 1.源码 2.c #include <stdio.h> typedef int (*HA ...

  6. U1C1 数据挖掘与文本分析的背景与实际应用

    U1C1 Background and practical applications of data mining and text analytics 一.机器学习 与 数据挖掘 (Machine ...

  7. 数据分析师招聘岗位分析

    数据分析师招聘岗位分析 1.本文的目的和内容 1.1.本文的目的: 通过分析能够了解公司对于数据分析岗位的要求及待遇 1.2本文的内容: 主要针对以下几个问题: 1.数据分析岗位不同城市的需求分布: ...

  8. 实验六、数据挖掘之关联分析

    实验六.数据挖掘之关联分析 一.实验目的 1. 理解Apriori算法的基本原理 2. 理解FP增长算法的基本原理 3. 学会用python实现Apriori算法 4. 学会用python实现FP增长 ...

  9. 数据挖掘与预测分析的区别与联系

    随着大数据在商业世界中变得越来越普遍,许多Web数据术语被遗忘了,其中许多术语我们并不清楚它们的含义.什么是数据挖掘?数据挖掘和预测分析之间有区别吗?两者有什么关系?所有这些都是很重要的问题,理解以后 ...

  10. 数据挖掘-客户倾向分析

    为了避免由客户流失造成的损失,您必须找出那些有流失危险和最有价值的客户,并相应开展保留和获取客户的活动.觉得现在的工作中我们可以利用现有的数据,并对这些数据进行分析来判断哪些客户有流失危险,哪些最有价 ...

最新文章

  1. 远程接入构建企业信息的计划时代--极通EWEBS
  2. jquery mobile app案例_讲座预告 | 运动app内的个人成就、运动轨迹和社交分享对体能提升的长期效应研究...
  3. FastReport报表,FastReport报表加载不出来
  4. 群晖218J安装mysql_ds216(群晖218j可以换内存吗)
  5. 计算机网络技术发源于什么,计算机网络基础试题和答案
  6. CCNA考试中实验题精讲(RIP,OSPF,VLAN)
  7. 【CSDN】-京东云部署java项目及性能测试
  8. c#中Split分割字符串的几种方法
  9. [FZYZOJ 1002] 雨天
  10. 基于SpringBoot/SSM的旅游论坛
  11. python简单文件服务器
  12. linux格式化ext4分区工具,硬盘格式化ext4软件 硬盘格式化ext4
  13. 【数学建模】层次分析法(AHP)+Matlab实现
  14. Java中的事务及使用
  15. 职工档案管理系统报告与c语言,[职工档案管理系统C语言.doc
  16. 格兰杰因果关系检验的局限性
  17. .Net Standard 2.1对您意味着什么
  18. 申请Freenom免费顶级域名的正确做法
  19. 成龙坦言演蒲松龄曾打退堂鼓:我演大文豪谁信啊
  20. 含protobuf程序运行时与libqgtk3.0.so冲突

热门文章

  1. 安卓手机Recovery刷机教程
  2. 建立AI智能系统智商评测体系,开展世界人工智能智商评测
  3. 微信小程序中输出大于号和小于号
  4. python动态爬虫_Python动态网页爬虫技术
  5. java将页面转为pdf和pdf上添加盖章
  6. unity之粒子特效制作图片拼合文字效果
  7. 无限循环小数四则运算_无限循环小数不能进行四则运算
  8. ERP-非财务人员的财务培训教(一.二)------财务基础知识
  9. <a>标签下载excel文件
  10. 关键字: CCTV5 天下足球 盗版