抓取结果如下:

将抓取结果循环写入csv文件:

此外还抓取了Java岗、C++岗、PHP岗、C#岗位4岗的信息,代码和抓取Python岗位信息类似。
二、以Python岗位信息为例,分析影响薪资的因素
这里包括数据清洗部分和数据分析部分两部分内容。
数据清洗部分
- data<-read.csv("E://Data For R/RData/Py.csv")
- data[sample(1:nrow(data),size=10),]

在抓取过程中,由于将python字典循环写入csv文件,因此列名也被循环写在csv文件中。

考虑本文主要分析影响薪资的因素,这里去除Name和Company两列。
- ##去除Name和Company两列
- DATA<-data[,-c(1,2)]
- ##将python字典循环写入csv文件时,标题也会被写入,去除多余的标题
- ##查找哪些行是标题重复的行
- which(DATA$Salary %in% "Salary")
- [1] 16 32 48 64 80 96 102 118 134 150 166 182 198 214 230 246 262 278 294 310 326 342 358 374 390 406 422 438 454 470 486 502 518
- [34] 534 550 566
- ##去除多余的标题所在的行
- DATA<-DATA[-(which(DATA$Salary %in% "Salary")),]
- dim(DATA)
- [1] 545 4
1.变量Salary
变量Salary一般都是范围值,用“-”连接,但是不排除有XXK以上,例如10k以上这种表示形式,或者其他形式,这里需要处理一下。
- ##如果薪资是一个范围值,都是"-"连接,注意,薪资是一个范围值,匹配末尾结束k值需要注意,有大写K和小写k两种形式。
- newdata<-DATA[grep('-',DATA$Salary),]
- dim(newdata)
- [1] 544 4
- ##对比前面dim(DATA),说明薪水少了一行,Salary具有其他的表示形式。
- ##这里将范围薪水的值分成底薪和高薪两部分,后面取平均值来表示薪水
- library(tidyr)
- library(stringr)
- newdata<-separate(data=newdata,col=Salary,into=c("lowsalary","highsalary"),sep="-")
- ##分别去除后面的k值,注意k有大写和小写两种形式
- newdata$lowsalary<-str_replace(newdata$lowsalary,'k|K',"")## |表示或的关系
- newdata$highsalary<-str_replace(newdata$highsalary,'k|K',"")
- newdata$lowsalary<-as.numeric(newdata$lowsalary)##转换数据类型
- newdata$highsalary<-as.numeric(newdata$highsalary)
- newdata$salary<-(newdata$lowsalary+newdata$highsalary)/2
- newdadat<-newdata[,-c(1,2)]##去除原有的lowsalary和highsalary
2.变量Education
- ###Education部分
- ##首先将Education中工作经验和学历分开
- newdata<-separate(data = newdata,col=Education,into=c("Experience","Graduate"),sep = '/')
- table(newdata$Experience)
- 经验1-3年 经验1年以下 经验3-5年 经验5-10年 经验不限 经验应届毕业生
- 187 6 261 46 37 7
- table(newdata$Graduate)
- 本科 不限 大专 硕士
- 447 27 63 7
(编辑:源码网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|