网页源码解析 - 智联招聘信息页面
根据招聘列表里面跳转过来的详细招聘信息页面。爬虫再根据这里进行关键信息提取。
相比于搜索列表页来说,这页内容很简单,而我们需要的也不多。
不过需要注意的是,这里在职业信息之外还需要额外收集企业信息。
虽然另外有专门的代码跳转到企业主页去搜集信息,但是阅读源码后发现,每家Special企业都可以自己定制网页,因此获取基本信息不方便。
所以企业基本信息要在这一页就收集齐(基本信息和企业主页里是完全一样的)。
下面开始简单分析下各处源码。
职位的头信息
可以直接用class*="inner-left"
对头信息进行定位,然后在其中用h1
标签为职位名称,h2
标签为公司名称,class="welfare-tab-box"
为福利信息。
职位基础信息
基础信息定位很简单,class^="terminal-ul"
就够了。但是其中的每个信息没有标记,就只能用中文名称或者是顺序定位了。
信息内容全包含在strong
标签里。
企业基本信息
- 公司规模:20-99人
- 公司性质:民营
- 公司行业:通信/电信运营、增值服务
- 公司主页:http://www.G-best.com.cn
-
公司地址:
上海市徐汇区桂林路396号中核浦原科技园3号楼101室
定位的话,直接找到class中含有terminal-company
的ul标签,然后按照li
标签的顺序或者按照中文文字匹配到企业基本信息。
职位描述信息
任职要求:
1、1年以上IT行业的售经验,以通讯产品及服务器产品为主;
2、熟悉Siemens,NEC, Panasonic,Alcatel等PBX 机型,具有VOIP组网的相关销售经验;具备专业客户销售技巧;擅长与客户交流并能迅速整合客户所需资源;3、熟悉思科、华为、Alcatel等数据交换机,具有相关销售经验;具备专业客户销售技巧;擅长与客户交流并能迅速整合客户所需资源;
4、具备良好人际交往、市场策划、方案演讲、商务谈判,有强烈的赢单欲望,乐于陌生人交流,善于沟通,性格稳重、勤奋,能够承受较大销售业绩压力。
5、有销售同类语音交换机PBX、数据交换机 产品经验者优先。
岗位职责:
1、负责本地区维护老客户,拓展新市场,建立与扩大销售网络,提升销售业绩,完成总部或分公司交付的销售任务;
2、建立和维护本地区的客户关系,树立良好的公司口碑和品牌形象;
3、负责项目投标的运作,包括商务文件的起草和整个标书的制作与审定;负责商务合同的起草、签署和项目收款工作;
4、高标准地为客户提供优质服务和妥善处理客户投诉,以提高客户的满意度;
5、不断学习新知识与新技术,提升自身的专业能力与职业素质; 工作地点: 北京
工作地址:
北京市丰台区南三环西路16号搜宝商务中心2号楼2608室
查看职位地图
这个也好说,直接找到class="tab-inner-cont"
,然后自动排除所有标签,只获取文本信息就够了。
需要注意的是,源码里有2个class为tab-inner-cont
的div,第1个是职位描述,第2个是企业简介。
企业简介
上面说过了,职位描述的class也为tab-inner-cont
,所以获取的时候按顺序取值就好了。
网页源码解析 - 企业主页
智联招聘的企业主页分为2种:普通主页和Special主页。Special主页是智联招聘里唯一能够让企业自己定制的页面了。
这也就形成了千奇百怪的源码,分析起来并不容易。不过好在企业的基本信息,在招聘页面就已经获得了。
剩下唯一需要的信息就是企业的所有招聘信息
了,也是非常重要的地方。
招聘信息在2种不同主页中,在源码中也分为了2种构建方式:
- 普通主页 :正常的tag循环陈列。域名统一是
http://special.zhaopin.com/
这样的 - Special主页:在javascript中以list列表变量形式储存,并动态显示出来。域名统一是
http://company.zhaopin.com/
这样的。
不过说回来,这也是不确定的解析,因为变化太多了,我只是随机打开了一些页面参考,不能代表全部。其实,最好的方法是在搜索页面直接按公司名称搜索,就得到他所有的招聘信息了。
那么下面开始进行2种源码的分析。
普通企业主页
职位名称 公司名称 职位月薪 工作地点 发布日期
地点:北京 公司性质:民营 公司规模:1000-9999人 经验:3-5年 学历:本科 职位月薪:15001-20000元岗位职责: 1、公司核心数据库的管理,保证数据库正常运转和数据的安全;包括安装、配置、升级,数据备份、恢复,性能监控分析调优等; 2、参与开发设计,负责数据结构设计; 3、负责公司数据仓库的建设。 任职要求: 1、具有三年以上MySQL工作经验; 2、精通MySQL数据库的运行机制和体系架构; 3、精...
可以看到,大容器是class中含有positionList
的div。其中每条招聘信息都是class="positionListContent"
的div,职位链接其实非常好找,找到class="jobName"
的span标签获取其下a链接的href地址就好了。
Special企业主页
实际上Special企业主页也不全都是以下的构建方式,发现了一些少数的大公司,会完全不一样,通过代码来看,是真没什么办法的。。。
可以看到,该企业所有的招聘信息都存在Javascript脚本中的叫arrJobList
的变量里了。变量的格式为:arrJobList=[[第1条招聘信息],[第2条招聘信息]]
,是列表嵌套列表。而每条招聘信息数据的内容为:["职位名称","招聘网址","所在地点","城市代码","行业名称","行业代码","企业名称","企业代码","发布日期","0","未知编号"]
其实这个地方,难点就在于怎么在python中获取Javascript脚本中的变量……
企业ID获取
其实也没什么大作用,不过如果方便获取,拿到它也是不错的,因为毕竟是一家企业在智联的数据库中唯一的标识吗!
通过观察,企业ID在企业主页的URL、源码中都频频出现:例如A公司的ID是121017111
在URL中有时是CC1210/1711/
,有时是CC121017111.htm
,有时是1210171119251740.htm
,还有pagepublish/12101711/index.html
这样的。而在源码中经常会在Javascript脚本中出现,如CC121017111J90251741000
这样的或是CC121017111J90250035000_530_1
这样的。
首先可以确定的是,企业ID一般是9位纯数字组成。
如上面URL中的如果以ID作为目录名则会时而减去最后1位变成8位,暂时不知道为什么,也许他们的目录必须在8位以下吧。
下面就来解析一下几种已知的出现方式和获取方式。
普通主页:
-
网址是
http://company.zhaopin.com/CC220397616.htm
的- 在URL中就可以获取ID,去掉
CC
和文件扩展名即是9位的ID220397616
。 - 在JS脚本中可以看到
var arrVarFromASP = ['CC220397616'];
这样的变量。 - 在JS脚本中可以看到这样的链接跳转:
申请职位 收藏职位
可以发现,`CC220397616J90250044000_530_1_66_101__2_`无论多长,企业ID总是`CC`的9位数字,而从`J`开头,就是具体的**职位ID**了。
源码中有
公司内搜索
会发现这样的链接标签,参数CompID
即是。
- 在URL中就可以获取ID,去掉