爬虫采集
.采集智联招聘信息进行分析
采集地址:
http://sou.zhaopin.com/jobs/searchresult.ashx?jl=%E5%8C%97%E4%BA%AC&kw=%E5%A4%A7%E6%95%B0%E6%8D%AE&sm=0&p=1
采集结果导入Hive,以下分析使用Hive SQL操作
分析工资最高的前3名职位(薪酬为范围时取平均值)
分析需求量最高的大数据前3名职位
分析大数据职位需求量最高的前3大行业(公司行业)
以上分析结果通过Zeppelin展示
有其他分析加分
===============================================================================
首先,将爬虫出来的数据上传到远程服务端。解决方案:
方案一:
1.rz –y查看是否可以CRT自己上传(一般只能小文件)
如果不可以出现如下:
那就安装:yum –y install lrzsz
安装成功后:rz –y会出现如下窗口:
选中文件->添加->确定就可以了。
方案二:
在CRT上:选项->会话选项->端口转发->添加->如图:
图中本地IP:127.0.0.1;端口:任意但不能重复。远程目的主机IP,端口22.确定。
最后选择上传的文件(一般大文件)。
其次,将爬虫出来的数据保存为csv格式,爬虫出来的数据是中文,到自己的CRT上会出现乱码。解决方案:
一。CRT修改
1.选项->会话选项->外观->字符编码:UTF-8
二。命令修改:
1.cd到自己上传的数据文件(如图albert.csv):
2.查看数据文件类型(如图UTF-16):
3.修改数据文件类型(复制iconv -f UTF-16-t UTF-8 albert.csv -o albert_new2.csv):
4.查看是否修改成功:
5.断开重启
6.cat 复制的文件:
作业全过程:
1.新建任务(高级模式采集)
2.新建网页
3.”下一个”循环
4.效果展现
5.创建一个元素列表处理一组元素
6.扩展
7.选择添到列表
8. 选择元素
9. 扩展
10.添加到列表后的效果,创建列表完成
11.循环
12.选择元素
13.选择这个元素文本
14.效果显示
15继续选择下一个文本.
16.点击这个元素进入下一个去选择元素
17.到了新页面后选择元素
18.选择需求文本
19. 选择下一个文本
20.文本选完效果下一步
21.下一步
22.启动单机选择
23.正在采集
24.停止
25.导出
26.数据在桌面,然后根据前面的上传方法上传到<root>中(rz -y),上传后的Csv格式为UTF-16,根据上文内容改成UTF-8(iconv -f UTF-16 -t UTF-8 作业.csv -o 作业_new.csv),cat一下内容如图:(收集了1000多条)
1.进入hive
2.创建表格
create table demo
(position string ,wages string ,postype string ,company string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
3.从root导入数据
load data local inpath '/hadoop_test/albert/test.txt' overwrite intotable demo;
4.查看导入的数据
select * from demo;
5.去除多余的“”符号
insert overwrite table demo select regexp_replace (position,'"',''),regexp_replace(wages,'"',''),regexp_replace(postype,'"',''),regexp_replace(company,'"','') from demo;
6.结果
以上是把数据收集到了,之后根据需求开始分析:
一、 分析工资最高的前3名职位(薪酬为范围时取平均值):
1.先创建表格position来存储职位和工资:
create table position
(position string,min string,max string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '-';
2.再从Demo导入数据:
insert into position(position,min) select position,wages from demo;
显示效果:
3.在创建一个表格来存储职位最小最大工资和平均工资:
create table work1
(position string,min string,max string,avg string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|';
4.再导入数据:
insert into work1 select *,(min + max)/2 as avg from position;
显示效果:
5.去Zeppelin显示结果:大数据项目培训老师(125000.5)、大数据总监(85000.5)、
大数据平台首席架构师(60000.5)
二、分析需求量最高的大数据前3名职位:大数据开发工程师(75)、大数据工程师(28)、大数据研发工程师(20)
三、分析大数据职位需求量最高的前3大行业(公司行业)
互联网/电子商务(284)、计算机软件(220)、IT服务(系统/数据/维护)
总结 :查询字符如果是数字就要bigint,如果是其他的就会错了