亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

嘗試獲取了人數 但是感覺實現不太優雅

var http = require('http');

var baseUrl = 'http://www.xianlaiwan.cn/learn/';

var learnNumber_baseUrl = 'http://www.xianlaiwan.cn/course/AjaxCourseMembers?ids='

var cheerio = require('cheerio');

var videosId = [728,637,348,259,197,134,75];


function filerChapters(pageData){

var html = pageData.html;

var $ = cheerio.load(html);

var chapters = $('.chapter');

var courseData = {

title:$('.hd h2').text(),

number:pageData.number,

id:$('.person-num').attr('href').split('/')[2],

videos:[]

};


chapters.each(function(item){

var chapter = $(this);

var chapterTitle = chapter.find('h3').text();

var videos = chapter.find('.video').children('li');

var chapterData = {

chapterTitle:chapterTitle,

videos:[]

};


videos.each(function(item){

var video = $(this).find('.J-media-item');

var videoTitle = video.text().trim();

var id = video.attr('href').split('video/')[1];

var videoData = {

title:videoTitle,

id:id

}

chapterData.videos.push(videoData);

});


courseData.videos.push(chapterData);

});

return courseData;

}


function printCourseData(coursesData){

coursesData.forEach(function(courseData){

console.log('\n');

console.log('? ? ?#########? ?'+courseData.title + '? [學習人數:' + courseData.number + ']? ?#########\n');

courseData.videos.forEach(function(item){

var chapterTitle = item.chapterTitle;


console.log(chapterTitle );


item.videos.forEach(function(video){

console.log(' [' + video.id+ ']' + video.title.trim().split('(')[0]);

})

})

})

}



function getPageAsync(url){

return new Promise(function(resolve, reject){

http.get(url,function(res){

var html = '';


res.on('data',function(data){

html += data;

});


res.on('end',function(){

resolve(html)

});

}).on('error',function(){

console.log('error');

})

})

}


function getLearnDataAsync(html){


return new Promise(function(resolve,reject){

var $ = cheerio.load(html)

var id = $('.person-num').attr('href').split('/')[2]

var pageData = {

html:html,

number:0

}

var db = ''

http.get(learnNumber_baseUrl+id,function(res){

res.on('data',function(data){

db += data;

db = JSON.parse(db)


pageData.number = parseInt(db.data[0].numbers,10)

})

res.on('end',function(){

resolve(pageData);

})

}).on('error',function(){

console.log('error')

})

})


}


var promiseList = []

var coursesDataPromises = []


videosId.forEach(function(id){

promiseList.push(getPageAsync(baseUrl+id).then(function(html){

return getLearnDataAsync(html);

}))

})


Promise

.all(promiseList)

.then(function(pagesData){

var coursesData = []

pagesData.forEach(function(pageData){

coursesData.push(filerChapters(pageData))

})

printCourseData(coursesData)

})


正在回答

2 回答

var learnNumber_baseUrl = 'http://www.xianlaiwan.cn/course/AjaxCourseMembers?ids='

你這是另辟蹊徑??!

0 回復 有任何疑惑可以回復我~

挺好的你還想要自行車啊

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
進擊Node.js基礎(二)
  • 參與學習       76735    人
  • 解答問題       242    個

本教程帶你攻破 Nodejs,讓 JavaScript流暢運行在服務器端

進入課程

嘗試獲取了人數 但是感覺實現不太優雅

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號