爬取斗鱼正在直播的主播数据(房间号,在线人数,房间标题,主播名称,直播分类等等)
安装npm包express+superagent+cheerio
})
app.get('/data',function(req,res){leturls=geturls(100);//获取100个urlletdatas=[];//存放目标数据async.mapLimit(urls,25,function(url,callback){//异步发送请求fetchPage(url,callback);//分析数据并提取},function(err,result){console.log('分析完成!');res.send(datas);//发送数据给前端});})async.mapLimit(coll,limit,iteratee,callback)
ps:最后一个函数里result参数的数据和datas数组数据是一样的,发送datas主要是方便后面页面提取
functionfetchPage(url,callback){superagent.get(url).end(function(err,sres){if(err){console.log(err);}else{letitem=JSON.parse(sres.text);//解析json数据letlist=item.data.rl;list.forEach(function(ele){//提取需要的数据letobj={name:ele.nn,id:ele.rid,online:ele.ol,title:ele.rn,class:ele.c2name,};datas.push(obj);});callback(null,datas);//这个datas会发送给result}})}})因为ajax请求直接返回的是json数据就不需要上面的cheerio解析
app.use(express.static('public'))app.listen(3030,function(){console.log('serverislisteningport3030....');})