zoukankan      html  css  js  c++  java
  • nodeJS实现简易爬虫

    nodeJS实现简易爬虫

    需求:使用nodeJS爬取昵图网某个分类下的图片并存入本地

    • 运用nodeJS自带系统模块http、fs

    示例代码:

    var http =require('http');
    var fs =require('fs');
    
    var curentPage=1; //当前图片页数
    var maxcurentPage=5;//最大页数
    //获取图片地址
    function getData(){
        let url = 'http://www.nipic.com/photo/xiandai/jiaotong/index.html?page='+curentPage
        http.get(url,(res)=>{
            var data = '';
            res.on('data',(a)=>{
                data+=a.toString();
            })
            res.on('end',()=>{
                let reg = /<img src="(.+?)" data-src="(.*?)"  alt="(.*?)" />/g
                let arr=[];
                while (reg.exec(data)){
                    arr.push(reg.exec(data)[2]);
                }
                for(i in arr){
                    (function(i){
                        setTimeout(()=>{
                            getImg(arr[i])
                        },500*i)
                    })(i)
                }
                if (curentPage < maxcurentPage){
                    curentPage++;
                    arguments.callee();
                }
            })
        })
    }
    //图片写入img文件夹
    function getImg(url){
        let u = url.replace(//pic//,'/file/')
            .replace(/_4.jpg/,'_2.jpg');
        http.get(u,(res)=>{
            let name = new Date().getTime();
            let stream = fs.createWriteStream('./img/' + name + '.png');
            res.pipe(stream);
        })
    }
    getData();
    
  • 相关阅读:
    css页面自适应 媒体查询
    微信小程序rich-text中的nodes属性
    解析base64数据流---加载pdf
    用伪元素完成箭头
    搭建vue --2.x
    搭建Vue项目 vue-cli vue1.x
    Chrome----TCP
    单进程VS多进程
    线程VS进程
    Chrome---network模块---Timing
  • 原文地址:https://www.cnblogs.com/sgs123/p/11425008.html
Copyright © 2011-2022 走看看