07慕课网《进击Node.js基础(一)》HTTP小爬虫

获取HTML页面

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

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

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

    res.on('end',function(){
        console.log(html)
    })
}).on('errer',function(){
    console.log('出错')

 

对HTML页面处理

添加cheerio模块

可以像使用jQuery一样编码

# 安装到当前目录下
npm install cheerio

 处理
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 = $('.chapter')
    // [{
    //     chapterTitle:'',
    //     videos:[{
    //             title:'',
    //             id:''
    //         }
    //     ]
    // }]    
    var courseData = []

    chapters.each(function(item){
        var chapter = $(this)
        var chapterTitle = chapter.find('h3').text()
        var videos = chapter.find('.video').children('li')
        var chapterData = {
            chapterTitle :chapterTitle.trim(),
            videos:[]
        } 

        videos.each(function(item){
            var video = $(this).find('a')
            var videoTile = video.text()
            var id = video.attr('href').split('video/')[1]
            chapterData.videos.push({
                title: videoTile.trim(),
                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.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('errer',function(){
    console.log('出错')
})

 

 使用promise重写:

10慕课网《进击Node.js基础(一)》初识promise

 

 

转载于:https://www.cnblogs.com/-beauTiFul/p/9097219.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值