码迷,mamicode.com
首页 > Web开发 > 详细

Nodejs小爬虫

时间:2017-07-14 00:44:12      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:ref   打开   get   print   learn   原理   console   push   网站   

记得先装载http这个模块

打开cmd  :npm install http -g

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(‘error‘,function(){
console.log(‘获取出错‘)
})

  

cmd:node一下,出来网页源码

 

然后npm install cheerio -g

用慕课网做测试哈哈哈  ,这里要说明一点:代码和课程中是不一样的,因为网站改动了源代码,class之类的名字换掉了,所以之前的爬虫爬不出来的。还好知道原理以后自己去改就可以了。

/**
 * Created by Amy on 2017/7/13.
 */
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(‘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.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(‘error‘,function(){
    console.log(‘获取出错‘)
})

  去node一下试试,好神奇吧。

 

Nodejs小爬虫

标签:ref   打开   get   print   learn   原理   console   push   网站   

原文地址:http://www.cnblogs.com/Amy-is-a-fish-yeah/p/7163784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!