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

2018.10.5 最新代码可用

var http = require('http')

var cheerio = require('cheerio')

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


function filterChapters(html) {

var $ = cheerio.load(html)

var chapters = $('.chapter')


var courseData = []

function trim(str) {

return str.replace(/[\r\n ]/g, "")  //去除字符算中的空格

}

chapters.each(function (index, item) {

var chapter = $(item)

var chapterTitle = chapter.find('h3').text().trim()

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

var chapterData = {

chapterTitle: chapterTitle,

videos: []

}


// console.log(chapterTitle);

videos.each(function (index, item) {

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

var videoTitle = video.text()

videoTitle = trim(videoTitle)

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

// console.log(videoTitle);

chapterData.videos.push({

videoTitle: 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.videoTitle + '\n')

})

})

}



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('获取课程信息出错!')

})


正在回答

1 回答

var videoTitle = video.text().trim();

请问为什么这一句代码,不能成功去除

videoTitle

的空格?

一定要下面的才可以呢?

var videoTitle = video.text();
videoTitle = trim(videoTitle);


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

秋刀鱼断水 提问者

trim()只是删除字符串开始和末尾的空格,你仔细看下我的代码“trim(videoTitle)”,我把它写成了一个方法
2018-10-07 回复 有任何疑惑可以回复我~
#2

封笺 回复 秋刀鱼断水 提问者

嗯嗯,我的意思是你的代码中 ```JS var chapterTitle = chapter.find('h3').text().trim() ``` 这个里面chapter后面可以直接接trim(),但是下面的代码 ```JS var videoTitle = video.text(); videoTitle = trim(videoTitle); ``` trim()并没有直接接在video后面?
2018-10-09 回复 有任何疑惑可以回复我~
#3

qq_与我无关N_0 回复 封笺

1..trim()是自带的方法,作用是去除字符串前后空格; 2..trim(videoTitle)是自己写的方法,作用是去除字符串中所有空格,videoTitle是作为参数传进.trim()里的; 3.另外去除字符串中所有空格,用return str.replace(/\s+/g,'')就好,楼主正则(/[\r\n ]/g,'')中\n后是有一个空格字符的,容易被忽略
2018-10-12 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

2018.10.5 最新代码可用

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