Nodejs爬取cnode精华板块

学习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);
    })
}
大神头像序列
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,453评论 0 6
  • cmd命令: ./ 当前目录 ../ 上一级 dir 查看当前目录 ls 查看当前目录下文件 win...
    3hours阅读 560评论 0 1
  • 目录Nodejs的介绍15个Nodejs应用场景Nodejs学习路线图 Nodejs的介绍Node.js的是建立在...
    寒剑飘零阅读 10,430评论 3 205
  • Node基本 node的最大特性莫过于基于事件驱动的非阻塞I/O模型。 node通过事件驱动的方式处理请求,无须为...
    AkaTBS阅读 2,251评论 0 11
  • 中国MMM 特色版项目奖金制度 静态奖金 提供帮助60元-60000元 每天1%利息,️息30% 提供1000元,...
    3M魔法师阅读 5,843评论 0 0