美文网首页
Nodejs爬取cnode精华板块

Nodejs爬取cnode精华板块

作者: Evtion | 来源:发表于2017-05-15 22:59 被阅读0次

    学习nodejs已经有段时间,网上很多nodejs爬虫的文章,所以着手练习写一段nodejs爬取鼎鼎大名的nodejs中文社区精华板块大神们的头像并且把图片下载以他们的昵称命名。

    • 详细代码如下所示,本文用到几个模块,主要是request(作为http代理端),cheerio(类似于浏览器端的jquery),核心模块(fs,path):
    const request=require('request');
    const cheerio=require('cheerio');
    const fs=require('fs');
    const path=require('path');
    const url="https://cnodejs.org/?tab=good&page=";
    for(let i=1;i<=16;i++){
        request(url+i,(error,response,body)=>{
            if(error && response.statusCode==200){
                console.log(error);
            }
            accepteData(body);
        });
    }
        
    function accepteData(data){
        let $=cheerio.load(data);
        let userNames=$('.user_avatar img').toArray();
        for(let i=0;i<userNames.length;i++){
            let src=userNames[i].attribs.src;
            let filename=basicName(userNames[i].attribs.title);
            downloadFile(src,filename,()=>{
                console.log('loading image'+i);
            });
        }
        
    }
    function basicName(addr){
        let filename=path.basename(addr);
        return filename;
    }
    function downloadFile(uri,filename,cb){
        
        request.head(uri,(error,response,body)=>{
            if(error){
                uri='https:'+uri;
            }
            request(uri).pipe(fs.createWriteStream('images/'+filename+'.jpg')).on('close', cb);
        })
    }
    
    大神头像序列

    相关文章

      网友评论

          本文标题:Nodejs爬取cnode精华板块

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