你的位置:首页 > 软件开发 > Java > 使用nodejs爬取拉勾苏州和上海的.NET职位信息

使用nodejs爬取拉勾苏州和上海的.NET职位信息

发布时间:2016-03-11 04:00:07
最近开始找工作,本人苏州,面了几家都没有结果很是伤心。在拉勾上按照城市苏州关键字.NET来搜索一共才80来个职位,再用薪水一过滤,基本上没几个能投了。再加上最近苏州的房价蹭蹭的长,房贷压力也是非常大,所以有点想往上海去发展。闲来无聊写了个小爬虫,爬了下苏州跟上海的.NET职位的信 ...

使用nodejs爬取拉勾苏州和上海的.NET职位信息

最近开始找工作,本人苏州,面了几家都没有结果很是伤心。在拉勾上按照城市苏州关键字.NET来搜索一共才80来个职位,再用薪水一过滤,基本上没几个能投了。再加上最近苏州的房价蹭蹭的长,房贷压力也是非常大,所以有点想往上海去发展。闲来无聊写了个小爬虫,爬了下苏州跟上海的.NET职位的信息,然后简单对比了一下。

是的小弟擅长.NET,为啥用nodejs?因为前几天有家公司给了个机会可以转nodejs,所以我是用来练手的,不过后来也泡汤了,但是还是花两晚写完了。刚学,代码丑轻喷哈!

一:如何爬取拉勾的数据

这个其实非常简单,本来还以为要用正则去分析html,其实拉勾分页提了ajax接口,可以直接用http去访问。打开神器Chrome的F12一看便知。

这是用nodejs模拟分页请求的代码:

var getData = function (kd,city,pn) {  var mongo = require('./mongo');  var http = require('http');  var queryString = require('querystring');  var postData=queryString.stringify({    'pn':pn,    'kd':kd,    'first':false  });  var options = {    hostname:'www.lagou.com',    method:'POST',    path:'/jobs/positionAjax.json?px=default&city='+city,    headers: {    'Content-Type': 'application/x-www-form-urlencoded',    'Content-Length': postData.length    }  };    var postResult = '';    var req = http.request(options,(res)=>{    console.log(`STATUS:${res.statusCode}`);    res.setEncoding('utf8');    res.on('data',(chunk)=>{      postResult+=chunk;    });     res.on('end',()=>{      console.log(`RESULT:${postResult}`);      var jsonObj =JSON.parse(postResult);      //insert into db      jsonObj.content.result.forEach((item)=>{        var salary = item.salary;        //拆分3k-6k,易于统计        var arr = salary.split('-');        var min = arr[0].substring(0,arr[0].indexOf('k'));        var max = arr.length>1? arr[1].substring(0,arr[1].indexOf('k')):min;        item.salaryMin = parseInt(min);        item.salaryMax = parseInt(max);                mongo.save(city,item);      });      if(jsonObj.content.hasNextPage&&jsonObj.content.totalPageCount>pn){        getData(kd,city,pn+1);      }    });    req.on('error',(e)=>{      console.log(`problem with request:${e.message}`);    });   });  req.write(postData);  req.end();  console.log(`start to get data. pn:${pn} city:${city} kd:${kd}`);};exports.run = getData;

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:使用nodejs爬取拉勾苏州和上海的.NET职位信息

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。