智联招聘数据爬取准备(2)-招聘信息页面及企业主页源码解析

网页源码解析 - 智联招聘信息页面

根据招聘列表里面跳转过来的详细招聘信息页面。爬虫再根据这里进行关键信息提取。
相比于搜索列表页来说,这页内容很简单,而我们需要的也不多。
不过需要注意的是,这里在职业信息之外还需要额外收集企业信息。
虽然另外有专门的代码跳转到企业主页去搜集信息,但是阅读源码后发现,每家Special企业都可以自己定制网页,因此获取基本信息不方便。
所以企业基本信息要在这一页就收集齐(基本信息和企业主页里是完全一样的)。
下面开始简单分析下各处源码。

职位的头信息

销售、销售总监阿尔卡特数据、语音交换机(金牌代理商)

上海巨优信息科技有限公司

五险一金年底双薪绩效奖金年终分红带薪年假节日福利通讯补贴交通补助

可以直接用class*="inner-left"对头信息进行定位,然后在其中用h1标签为职位名称,h2标签为公司名称,class="welfare-tab-box"为福利信息。

职位基础信息

  • 职位月薪:8001-10000元/月
  • 工作地点:北京
  • 发布日期:2015-12-12
  • 工作性质:全职
  • 工作经验:1-3年
  • 最低学历:大专
  • 招聘人数:1人
  • 职位类别:销售经理

基础信息定位很简单,class^="terminal-ul"就够了。但是其中的每个信息没有标记,就只能用中文名称或者是顺序定位了。
信息内容全包含在strong标签里。

企业基本信息

上海巨优信息科技有限公司

定位的话,直接找到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种源码的分析。

普通企业主页

职位名称 公司名称 职位月薪 工作地点 发布日期

数据库工程师 民信阿里信息咨询(北京)有限公司 15001-20000元 北京 2015-12-12
地点:北京 公司性质:民营 公司规模: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

    1. 在URL中就可以获取ID,去掉CC和文件扩展名即是9位的ID220397616
    2. 在JS脚本中可以看到var arrVarFromASP = ['CC220397616'];这样的变量。
    3. 在JS脚本中可以看到这样的链接跳转:
    申请职位
    收藏职位
    
      可以发现,`CC220397616J90250044000_530_1_66_101__2_`无论多长,企业ID总是`CC`的9位数字,而从`J`开头,就是具体的**职位ID**了。
    
    1. 源码中有公司内搜索会发现这样的链接标签,参数CompID即是。

Special主页:

你可能感兴趣的:(智联招聘数据爬取准备(2)-招聘信息页面及企业主页源码解析)