欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Node JS爬虫: 阮老师网站背景图

程序员文章站 2022-05-31 19:24:52
有一天发现,阮一峰老师的博客图片很好看,想收藏一下,因为几百张,一张张下载太慢,朋友推荐了个谷歌插件(Fatkun)确实挺好用的,这之后就对爬虫有了兴趣,这个项目会整理一些简单切实用的爬虫代码 **[crawler-img](https://github.com/mingjiezhou/crawle... ......

小白,轻喷,本文教你三分钟入门爬虫

前言

有一天发现,阮一峰老师的博客图片很好看,想收藏一下,因为几百张,一张张下载太慢,朋友推荐了个谷歌插件(fatkun)确实挺好用的,这之后就对爬虫有了兴趣,这个项目会整理一些简单切实用的爬虫代码 ,都是基于 node 实现。

使用:

  1. npm install
  2. 部分需求直接用 node 指令执行相应的 js 文件就可以实现

简单案例:爬取阮老师网站背景图并保存本地

一句话介绍:request 模块可以简化 node 环境下的 http 请求操作,fs 是node 自带的模块,用来读写文件

安装依赖:

npm install request --save

引入

let request = require('request');
let fs = require('fs');

核心代码(其实总共也就这么多~):

for (let i=1; i< 20; i++) {
    request(`http://www.ruanyifeng.com/images_pub/pub_${i}.jpg`).pipe(fs.createwritestream(`img/${i}.png`))
}

要注意控制并发量,对调用频率做个限制,改进如下

function getimg(i, times){
  return new promise(function(resolve, reject){
    settimeout(function(){
      request(`http://www.ruanyifeng.com/images_pub/pub_${i}.jpg`).pipe(fs.createwritestream(`img/${i}.png`))
      resolve();
    },times)
  })
  
}
async function loop() {
  for (let i=1; i<356; i++) {
    await getimg(i, 300); //每秒调用三次
  }
}
loop();

效果图

Node JS爬虫: 阮老师网站背景图

总结

爬虫入门是不是很简单又好玩,你学会了吗?