亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

能夠運行,但是顯示為空

var?http?=?require('http');
var?Promise?=?require('bluebird');
var?cheerio?=?require('cheerio');
var?baseUrl?=?'http://www.xianlaiwan.cn/learn/'
var?url?=?'http://www.xianlaiwan.cn/learn/348'
var?videoIds?=?[348,259,197,134,75]

function?filterChapters(html){
	var?$?=?cheerio.load(html)
	var?chapters?=?$('.chapter')

	var?title?=?$('.l').text()

	var?number?=?$('.js-learn-num').text()

	//?courseData?=?{
	//?	title:title,
	//?	number:number,
	//?	videos:[{
	//?		chapterTitle:'',
	//?		videos:[
	//?			title:'',
	//?			id:''
	//?		]
	//?	}]
	//?}

	var?courseData?=?{
		title:title,
		number:number,
		videos:[]
	}

	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.videos.push(chapterData)
	})

	return?courseData
}


function?printCourseInfo(coursesData){
	coursesData.forEach(function(courseData){
		console.log(courseData.number?+?"人學過"?+?courseData.title?+?"\n")

		console.log(courseData)
		console.log(courseData.number?+?"\n")
		console.log(courseData.title?+?"\n")
	})

	coursesData.forEach(function(courseData){
		console.log('###'?+?courseData.title?+?'\n')
		courseData.videos.forEach(function(item){

			var?chapterTitle?=?item.chapterTitle
			console.log(chapterTitle?+?'\n')
			
			item.videos.forEach(function(video){
				console.log('?【?'?+?video.id?+'】?'?+?video.title?+?'\n')
			})
		})
	})
}

function?getPageAsync(url){
	return?new?Promise(function(resolve,reject){
		console.log('正在爬取'?+?url);

		http.get(url,function(res){
			var?html?=?''

			res.on('data',function(data){
				html?+=?data
			})

			res.on('end',function(){
				resolve(html)
			})
		}).on('error',function(e){
			reject(e)
			console.log('獲取課程數據出錯')
		})
	})
}

var?fetchCourseArray?=?[];

videoIds.forEach(function(id){
	fetchCourseArray.push(getPageAsync(baseUrl?+?id))
})

Promise
	.all([fetchCourseArray])
	.then(function(pages){
		var?coursesData?=?[]

		pages.forEach(function(html){
			var?courses?=?filterChapters(html)

			coursesData.push(courses)
		})

		coursesData.sort(function(a,b){
			return?a.number?<?b.number
		})

		printCourseInfo(coursesData)
	})


正在回答

1 回答

第112行調用錯了,多加了方括號。

.all([fetchCourseArray])

改成

.all(fetchCourseArray)


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

飄移的鼻毛 提問者

謝謝,幫我了大忙了都
2016-12-13 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
進擊Node.js基礎(二)
  • 參與學習       76735    人
  • 解答問題       242    個

本教程帶你攻破 Nodejs,讓 JavaScript流暢運行在服務器端

進入課程

能夠運行,但是顯示為空

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號