有一天發現,阮一峰老師的博客圖片很好看,想收藏一下,因為幾百張,一張張下載太慢,朋友推薦了個谷歌插件(Fatkun)確實挺好用的,這之後就對爬蟲有了興趣,這個項目會整理一些簡單切實用的爬蟲代碼 **[crawler-img](https://github.com/mingjiezhou/crawle... ...
小白,輕噴,本文教你三分鐘入門爬蟲
前言
有一天發現,阮一峰老師的博客圖片很好看,想收藏一下,因為幾百張,一張張下載太慢,朋友推薦了個谷歌插件(Fatkun)確實挺好用的,這之後就對爬蟲有了興趣,這個項目會整理一些簡單切實用的爬蟲代碼 crawler-img,都是基於 Node 實現。
使用:
- npm install
- 部分需求直接用 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();
效果圖
總結
爬蟲入門是不是很簡單又好玩,你學會了嗎?