爬虫,基本上每个公司都有,难免落在前端开发的头上。今天我们就来看看Node是如何爬取数据的。其实前端抓取数据,就是ajax请求一个接口,但是返回值有两种类型:text/html(早期的XML之类),application/json(目前工作中使用的就是这种类型).有时候为了一些简单的数据分析,我直接在控制台请求数据。请求页面发起的请求和node发起的请求还是有区别的。再来说说https库和http库consthttps=require('https');//Node自带https.get('https://www.lilnong.top/cors/node-https',(resp)=>{letdata='';resp.on('data',(chunk)=>{data+=chunk;});resp.on('end',()=>{console.log('resp',JSON.parse(data));});}).on("error",(err)=>{console.log("Error:"+err.message);});优点是Native自成一体,没有依赖。缺点也很明显。很多功能不支持,写法复杂。http和https不共享。你可以认为是前端XMLHTTPRequest,很少有人直接使用。request库是需要安装的第三方库。它易于使用并且被大量的人使用。request=require('request');request('https://www.lilnong.top/cors/node-request',{json:true},function(err,res,body){if(err){返回console.log(err);}console.log(body);});优点是包库简单易用,支持的东西很多。缺点是库停止新功能的开发,不是promise(request-promise)。axios库也是需要安装的第三方库。因为这个库可以跨环境使用(前端和Node都可以),所以用起来也很方便。axios=require('axios');axios('https://www.lilnong.top/cors/node-axios').then(函数(rsp){console.log(rsp.data);});pros换句话说,跨环境,promise。缺点方面,node中的formdata,https设置代理时(axios-https-proxy-fix),其他库其实有很多https://github.com/request/re...node-fetchgotsuperagenturllib页面发起请求XMLHttpRequestxhr=newXMLHttpRequest();xhr.open('get','//www.lilnong.top/cors/XMLHttpRequest')xhr.send()xhr.responseType='json'xhr.onload=()=>console.log(xhr.response)是它附带的。经过多年的更新,基本具备了所有的功能。缺点是低版本的IE不支持(IE不需要jquery不是废话吗,一般是$.ajax)axios跨平台库可以在浏览器环境和Node环境下使用。axios('https://www.lilnong.top/cors/axios').then(function(rsp){console.log(rsp.data);});优点,跨平台(上面代码可以复制然后运行??)缺点,好的。我基本上一直在用它,没有明显的弱点。$.ajaxjquery库中携带的方法。也是神器,支持promise方法。$.ajax({url:'https://www.lilnong.top/cors/$.ajax'}).then(函数(数据){console.log(数据);});优点:兼容性好,支持多种写法。缺点:时代变了,jquery已经过时了。你问这是什么?这是青年抓取浏览器的新规范。使用起来也很方便,abort的规范也在制定中。当然,xhr还不能杀掉。fetch('https://www.lilnong.top/cors/fetch').then(v=>v.json()).then(console.log)优点:添加到浏览器,天生支持promise缺点:兼容需要添加的功能还蛮多的(abort、progress、cookie(默认值已改))看一下这个API,如果熟悉了,基本可以上手使用了。$=cheerio.load('
