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一下试试,好神奇吧。

  • 相关阅读:
    2019-8-22学习笔记---文件上传与读取
    JS字符串的操作
    JS控制台打印星星,总有你要的那一款~呐~给你小心心哦~~~❤
    DOM的操作(增删改查)
    js上传视频(jquery.form.js)
    vue单页面模板说明文档(3)
    vue单页面模板说明文档(2)
    vue单页面模板说明文档(1)
    js 通过url获取里面的参数值
    ios点击输入框,界面放大解决方案
  • 原文地址:https://www.cnblogs.com/Amy-is-a-fish-yeah/p/7163784.html
Copyright © 2011-2022 走看看