zoukankan      html  css  js  c++  java
  • 使用Node拉取拉勾网杭州web前端数据,本地保存为json文件

    目标url

    https://www.lagou.com/jobs/positionAjax.json

    目标数据

    image.png

    代码展示(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

  • 相关阅读:
    JMeter之录制脚本
    好的软件测试人员简历是什么样子的?
    好的软件测试人员简历是什么样子的?
    luogu P2002 消息扩散
    luogu P1726 上白泽慧音
    luogu P1038 神经网络
    luogu P1418 选点问题
    luogu P1824 进击的奶牛
    luogu P1330 封锁阳光大学
    luogu P1546 最短网络 Agri-Net
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/12767789.html
Copyright © 2011-2022 走看看