为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的大标题是一次全部列出?

var http=require('http');

var url='http://www.imooc.com/learn/348';

var cheerio=require('cheerio');


function filterChapters(html){

var $=cheerio.load(html);

var chapters=$('div.chapter');

var courseData=[];


chapters.each(function(data){

var chapter=$(this);

chapter.find('.icon-info').remove();

var chapterTitle=$('.chapter strong').text().trim();

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

var videolist=[];

videos.each(function(item){

var video=$(this);

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

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

var videoTitle=videoall.find('.icon-video').remove().end().text().trim();


videolist.push({

title:videoTitle,

id:id

})

})

courseData.push({

title:chapterTitle,

courselist:videolist

});

})

return courseData;

}


function printCourseInfo(courseData){

courseData.forEach(function(item){

var chapterTitle=item.title;

console.log(chapterTitle+'\n');


item.courselist.forEach(function(video){

console.log('['+video.id+']'+video.title+'\n');

})

})

}


http.get(url,function(res){

var html='';


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

html+=data;

})


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

var courseData=filterChapters(html);

printCourseInfo(courseData);

})


})

运行时内容为:

一、前言

二、安装nodejs

、、

五、、

然后才是1-1,,1-2


第二章的标题处也是五章标题都列出,再是2-1,2-2,,求解~


正在回答

2 回答

var chapterTitle=$('.chapter strong').text().trim();

bug在这儿,应更改为

var chapterTitle=chapter.$('strong').text().trim();

0 回复 有任何疑惑可以回复我~
#1

fel 提问者

非常感谢!
2016-11-14 回复 有任何疑惑可以回复我~

这是回调函数用法。

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

举报

0/150
提交
取消
进击Node.js基础(一)
  • 参与学习       219397    人
  • 解答问题       896    个

本视频教程带你揭开Node.js的面纱,带你走进一个全新世界

进入课程

为什么我的大标题是一次全部列出?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信