使用Node拉取拉勾网杭州web前端数据,本地保存为json文件
目标url
https://www.lagou.com/jobs/positionAjax.json
目标数据

代码展示(index.js)
const fs=require('fs');
const https=require('https');
const querystring=require('querystring');
let isLast=false;
const getLagou=function(pageNo,isFirst){
const params={
needAddtionalResult:false,
first: isFirst,
pn: pageNo,
city:'杭州',
kd: 'web前端'
}
const url=`https://www.lagou.com/jobs/positionAjax.json?`+querystring.stringify(params)
const req = https.get(url, (res) => {
res.setEncoding('utf8');
let Data=''
res.on('data', (d) => {
Data += d;
}).on('end',()=>{
// console.log(123)
// 数据拼接
let content=Data&&JSON.parse(Data).content
if(content){
let data=content.positionResult.result
isLast=content.positionResult.resultSize===0;
data=data.map(item=>{
return {
companyShortName:item.companyShortName,
companySize:item.companySize,
city:item.city,
salary:item.salary,
workYear:item.workYear,
education:item.education
}
})
if(!isFirst){
const source=fs.readFileSync(`./lagou.json`)
let src=JSON.parse(source).data
data.push(...src)
}
const len=data.length;
let res={data,size:len}
fs.writeFile(`./lagou.json`,JSON.stringify(res), res=> {
console.log('lagou.json生成成功')
});
}
})
});
req.on('error', (e) => {
console.error(e);
})
req.end();
}
let count=1;
// 每隔3秒请求一次,知道没有数据为止
const getAllMsg=function(){
getLagou(count,count===1);
count++;
if(isLast) return ;
setTimeout(()=>{
console.log(count)
getAllMsg();
},3000)
}
getAllMsg();
使用
终端:node index.js

浙公网安备 33010602011771号