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

请问为什么没有内容出来

var http = require('http')
var cheerio = require('cheerio')
var url = "http://www.imooc.com/learn/348"

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')
        })
    })
}

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]

            chapterData.videos.push({
                title:videoTitle,
                id:id
            })
        })
        courseData.push(chapterData)
    })
    return courseData
}

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('获取课程数据出错')
    })
})



正在回答

3 回答

你的代码有问题

1.http爬虫部分的代码写错了,最后的on的位置应该是这样的:

http.get(url, function(res){
	var html = ''
	res.on('data', function(data){
		html += data
	})

	res.on('end', function(){
		// console.log(html)
		var courseData = filterChapters(html)

		printCourseInfo(courseData)
	})
}).on('error', function(){
	console.log('error')
})

2.爬出的结果部分类名不对,现在的imooc网站类名有更改

function filterChapters(html){
	var $ = cheerio.load(html)
	//你的这个chapters错了
	var chapters = $('.chapter')
	......
}


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

橙子21 提问者

非常感谢!
2016-07-06 回复 有任何疑惑可以回复我~
var http = require('http')
var cheerio = require('cheerio')
var url = "http://www.imooc.com/learn/348"

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')
        })
    })
}

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()
        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
}

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('error')
    })
})


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

又翻着看了上一期的,没有用过http命令,容易搞不清格式,多谢

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

举报

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

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

进入课程

请问为什么没有内容出来

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