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

这段代码是与老师的一模一样,但是为什么在命令行运行后什么都不显示不加载呢?

var http=require('http')

var cheerio=require('cheerio')

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


function filterChapters(html){

var $=cheerio.load(html)

var chapters=$('.learnchapter')

// [{

// chapterTitle:'',

// videos:[

// title:'',

// id:''

// ]

// }]

// 

var courseData=[]


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('.studyvideo')

var videoTitle = video.text()

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

// console.log('sssss')

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(' 【' + videos.id + '】 ' + videos.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)

})

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

console.log('获取出错')

})

http://img1.sycdn.imooc.com//5800a35800012d0105580132.jpg

正在回答

3 回答

那是因为现在慕课网的html页面元素的class名更改了。

1、var chapters=$('.learnchapter')  修改为     var chapters=$('.chapter')

2、var video=$(this).find('.studyvideo')  修改为  var video=$(this).find('.J-media-item')

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

长不大不勤奋

我改了,但还是不显示。我在最后console.log('1234')可以打印出来1234.
2016-12-26 回复 有任何疑惑可以回复我~
#2

长不大不勤奋

解决了 是因为我的类名写错了var chapters = $('.chapter') 写成了var chapters = $('.chpater')。我看了这个贴把楼主的代码和我的比较了一下。楼主的代码中console.log(' 【' + videos.id + '】 ' + videos.title + '\n')的是为video没有s,楼主的代码虽然报错但是可以跑出来。我看了我的发现了问题,是类名写的不对。我还以为是cheerio没装上去。装了4天。感谢楼主的代码,和笑歌自若的解答让我找到问题所在,心里的烦躁好了许多,非常感谢。
2016-12-26 回复 有任何疑惑可以回复我~

66666666666

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

666,谢谢!

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

举报

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

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

进入课程

这段代码是与老师的一模一样,但是为什么在命令行运行后什么都不显示不加载呢?

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