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

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

小小代碼,有點意思哈

var http = require('http')

var cheerio = require('cheerio')

var Promise = require('bluebird')

var baseUrl = 'http://www.xianlaiwan.cn/learn/'

var videoIds = [348,259,197,134,75]


function filterChapters(html) {

var $ = cheerio.load(html)

var chapters = $('.chapter')

var title = $('.course-infos .path span').text()

// var num =? parseInt($($('.meta-value strong')[3]).text().trim(), 10)

? ? ?var num = 0

// coursesData = {

// title: title,

// number: number,

// videos: [{

// chapterTitle : '',

// videos : [

// ? ? title: '',

// ? ? id: ''

// ]

// }]

// }


? ? var courseData = {

? ? video: [],

? ? num: num,

? ? title: title

? ? }

? ??

? ? 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.video.push(chapterData)

? ? })

? ? return courseData

}


function printCourseInfo(coursesData) {

? ? coursesData.forEach(function(courseData){

? ?

? ? console.log('------------------------------------------'+courseData.num + '人學過 '+ courseData.title +'------------------------------------------'+ '\n' )

? ?

? ? courseData.video.forEach(function(val) {

console.log('############# ' + (val.chapterTitle).replace(/(^\s*)|(\s*$)/g, "") + '############# ')

console.log("\n")

//? ? ? ? ? ? ? ?console.log('\t'+'【 id'+ (val.videos[0].id).replace(/(^\s*)|(\s*$)/g, "")+' 】'+((val.videos)[0].title).replace(/(^\s*)|(\s*$)/g, "") +'\n')

//? ? ? ? ? ? ? ?console.log("-----------------------------------------------------")

? ? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? val.videos.forEach(function(item){

? ? ? ? ? ? ? ? ? console.log('\t 【 id '+item.id+" 】? ?"+(item.title).replace(/(^\s*)|(\s*$)/g, ""))

? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? })

})

? ? })

}


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 course = filterChapters(html)

? ?

? ? coursesData.push(course)

? ? })

? ?

? ? coursesData.sort(function(a, b){

? ? return a.number < b.number

? ? })

? ?

? ? printCourseInfo(coursesData)

? ? })


正在回答

1 回答

666

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

舉報

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

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

進入課程

小小代碼,有點意思哈

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

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

幫助反饋 APP下載

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

公眾號

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