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

命令行执行成功之后,每个详细的课程信息显示为undefined,求指教?

http://img1.sycdn.imooc.com//58e105bf00012d8906270644.jpg

代码部分:

var http = require("http"); //加载http模块

var cheerio = require("cheerio"); //加载cheerio模块

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


// 获取课程数据

function filterChapters(html){

var $ = cheerio.load(html);

var chapters = $(".chapter");


/*

要获取的数据的结构

[{

chapterTitle: "",

videos: [

title: "",

id: ""

]

}]

*/


var courseData = [];


chapters.each(function(item){

var chapter = $(this);

var chapterTitle = chapter.find("strong").text().trim();

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

var chapterData = {

chapterTitle: chapterTitle,

videos: []

};


videos.each(function(item){

var video = $(this).find(".video");

var videoTitle = video.text();

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


chapterData.videos.push({

title: videoTitle,

id: id

});

});


courseData.push(chapterData);

})


return courseData

};


// 写入获取到的课程数据

function printCourseInfo(courseData){

courseData.forEach(function(item) {

var chapterTitle = item.chapterTitle;


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


item.videos.forEach(function(video){

console.log(" 【 " + video.id + " 】 " + video.title + "\n");

});

});

};


// get方法发送请求

http.get(url, function(res){

var html = "";


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

html += data;

});


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

var courseData = filterChapters(html);


printCourseInfo(courseData);

});

}).on("error", function(){ //监听错误处理

console.log("获取课程数据出错!");

});


正在回答

2 回答

好的,谢谢哈,已经解决了。

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

var video = $(this).find(".video");    这一步好像不对吧,网页结构里class  是:J-media-item

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

慕粉_04045492 提问者

谢谢!
2017-04-03 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

命令行执行成功之后,每个详细的课程信息显示为undefined,求指教?

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