谁能给我看一下这节的代码,我找不出问题
var http=require('http');
var Promise=require('bluebird');
var cheerio=require('cheerio');
var baseUrl='http://www.imooc.com/learn/';
var videoIds=[348,637,197,134,75];
//coursesData={
// title:title,//课程名字,例如进击Node.js基础(一)
// number:number,//学习人数
// videos:[{
// chapterTitle:'',//每一章标题,例如前言
// videos:[
// title:'',
// id:''
// ]
// }]
//}
function printCourseInfo(coursesData){
coursesData.forEach(function(courseData){
console.log(courseData.number+'人学过'+courseData.title+'\n');
courseData.videos.forEach(function(item){
console.log(item.chapterTitle);
item.videos.foreach(function(video){
console.log(video.title);
})
});
});
}
function filterChapters(html){
var $=cheerio.load(html);
var courseData={
title:title,
number:number,
videos:[]
};
var chapters=$('.chapter');
var title=$('.hd .l').text();
var number=parseInt($($(".meta-value strong")[3]).text().trim(),10);
chapters.each(function(item){
var chapter=$(this);
var chapterTitle=chapter.find('strong').text();
var videos=chapter.find('.video').children('li');
var chapterData={
chapterTitle:chapterTitle,
video:[]
};
videos.each(function(item){
var video=$(this).find('.studyvideo');
var videoTitle=video.text();
var id=video.attr('href').split('video/')[1];
chapterData.video.push({
title:videoTitle,
id:id
})
});
courseData.videos.push(chapterData);
});
return courseData;
}
function getPageAsync(url) {
return new Promise(function (resolve, reject) {
console.log('正在爬取' + url);
http.get(url, function (res) {
var html = '';
res.on('data', function (data) {
html += data;
});
res.on('end', function () {
reslove(html);
});
}).on('error', function (e) {
reject(e);
console.log('获取数据失败');
});
})
}
var fetchCourseArry=[];
videoIds.forEach(function(id){
fetchCourseArry.push(getPageAsync((baseUrl+id)));
});
Promise
.all(fetchCourseArry)
.then(function(pages){
var coursesData=[];
pages.forEach(function(html){
var courses=filterChapters(html);
coursesData.push(courses);
})
});
courseData.sort(function(a,b){
return a.number< b.number;
});
printCourseInfo(coursesData);