zoukankan      html  css  js  c++  java
  • Nodejs小爬虫

    记得先装载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+'
    ')
            item.videos.forEach(function(video){
                console.log('['+video.id+']'+video.title+'
    ')
            })
        })
    }
    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一下试试,好神奇吧。

  • 相关阅读:
    十大经典排序算法最强总结(含Java、Python码实现)
    数据库查询优化的12种方式
    开发环境、测试环境、预发布环境、生产环境的区别
    阅站无数的我,只推荐下面这些让你起飞的
    访问控制符
    继承的意义
    数组继承的意义
    java 俄罗斯方块
    类和面向对象
    随机生成数组游戏
  • 原文地址:https://www.cnblogs.com/Amy-is-a-fish-yeah/p/7163784.html
Copyright © 2011-2022 走看看