nodejs

作者: poppyl | 来源:发表于2016-11-16 09:33 被阅读0次

    npm install cheerio'''

    chinese:http://cnodejs.org/topic/5203a71844e76d216a727d2e
    english:https://github.com/cheeriojs/cheerio


    这个是和jQuery很想,可以对html进行处理
    下面是一个慕课网网络爬虫的

    var http=require('http');
    var url='http://www.imooc.com/learn/348'
    var cheerio=require('cheerio')
    
    function filterChapters(html){
    var $=cheerio.load(html)
    var chapters=$('div.chapter')
    // [{
    
    // }]
    var courseData=[]
     chapters.each(function () {
            var chapter=$(this) // $(this)的用法可以让回调方法省略参数
            // var chapterTitle = chapter.find('strong').text().trim()
            var chapterTitle = chapter.find('strong').contents().filter(function() { return this.nodeType === 3; }).text().trim(); 
            var videos=chapter.find('ul').children()
            var chapterData = { // 定义一个json以接收数据
                chapterTitle : chapterTitle,
                videos:[]
            }
    
            videos.each(function () {
                var video=$(this).find('a')
                var temp=video.text().trim()
                // var temp=video.contents().filter(function() { return this.nodeType === 3; }).text().trim(); 
                var arr = temp.split('\n') // 多层标签的文本都拼到一起了,要拆开,取用需要的值
                var videoTitle = arr[0].trim() + ' ' +arr[1].trim()
                var id=video.attr('href').split('video/')[1].trim()
    
                chapterData.videos.push({ // 填写数据 
                    title : videoTitle,
                    id : id
                })
            })
    
            courseData.push(chapterData)
        })
    
        return courseData
    }
    function printCourseData(courseData) {
        courseData.forEach(function (item) {
            var chapterTitle = item.chapterTitle
    
            console.log(chapterTitle )
    
            item.videos.forEach(function (video) {
                console.log('---【'+video.id + '】 ' + video.title.trim() )
            })
        })
    }
    http.get(url,function(res){
        var html=''
        res.on('data',function(data){
            html+=data
        })
        res.on('end',function(){
            var courseData= filterChapters(html)
            printCourseData(courseData)
        })
    }).on('error',function(){
        console.log('get failed')
    })
    

    ===

    相关文章

      网友评论

          本文标题:nodejs

          本文链接:https://www.haomeiwen.com/subject/yzalpttx.html