node下,運行彈出錯誤
請問各位大神,這個問題應該怎么解決?
我試過npm init --yes了,還是不行。
下面是代碼
var?http?=?require('http'); var?promise?=?require('bluebird'); var?cheerio?=?require('cheerio'); var?baseUrl?=?'http://www.xianlaiwan.cn/learn/'; var?videoIds?=?[75,134,197,259,348,637]; function?filterChapters(html){ var?$?=?cheerio.load(html); /*var?chapters?=?$('.mod-chapters'); var?title?=?$('#page_title?.path?span').text(); var?num?=?parseInt($($('.info_num?i')[0]).text().trim(),10);*/ var?chapters?=?$('.chapter') ????var?title?=?$('.course-infos?.path?span').text() ????var?number?=?parseInt($($('.meta-value?strong')[3]).text().trim(),?10) /*courseData?=?{ title:?title, number:?number, videos:?[{ chapterTitle:?'', videos:[ title:?'', id:?'' ] }] } */ var?courseData?=?{ videos:?[], number:?number, title:?[] }; chapters.each(function(item){ var?chapter?=?$(this); var?chapterTitle?=?chapter.find('strong').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(); var?id?=?video.attr('href').split('/video/')[1]; chapterData.videos.push({ title:?videoTitle, id:?id }) }) courseData.push(chapterData); }) return?courseData; } function?printCourseInfo(coursesData)?{ coursesData.forEach(function(courseData)?{ console.log(courseData.num?+?'人學過'?+?courseData.title?+?'\n'); }) coursesData.forEach(function(courseData)?{ console.log('###'?+?'courseData.title'?+?'\n'); var?chapterTitle?=?item.chapterTitle; courseData.forEach(function(item)?{ console.log('###'?+?'courseData.title'?+?'\n'); var?chapterTitle?=?item.chapterTitle; console.log(chapterTitle+'\n'); item.videos.forEach(function(video)?{ console.log('?【'+video.id+'】'+video.title+'\n'); }) }) }) } function?getPageAsync(url)?{ return?promise(function(resolve,reject)?{ console.log('正在爬取'); http.get(url,function(res)?{ var?html?=?''; res.on('data',function(data){ html?+=?data; }) res.on('end',function(){ resolve(html); }) }).on('error',function(e){ reject(e); console.log('獲取課程數據出錯'); }) }) } var?fetctCourseArray?=?[]; videoIds.forEach(function(id)?{ fetctCourseArray.push(getPageAsync(baseUrl?+?id)); }) promise .all([]) .then(function(pages)?{ var?courseData?=?[]; pages.forEach(function(html)?{ var?courses?=?filterChapters(html); courseData.push(courses); }) courseData.sort(function(a,b)?{ return?a.number?>?b.number }) printCourseInfo(courseData); })
2016-09-21
首先 promise.all(fetctCourseArray);
其次慕課網改版了,你上面的title跟number都應該獲取不到數據
2016-09-24
終于爬出來了。。。