Node JS爬蟲: 阮老師網站背景圖

来源:https://www.cnblogs.com/zhoumingjie/archive/2019/11/28/11950322.html

有一天發現,阮一峰老師的博客圖片很好看,想收藏一下,因為幾百張,一張張下載太慢,朋友推薦了個谷歌插件(Fatkun)確實挺好用的,這之後就對爬蟲有了興趣,這個項目會整理一些簡單切實用的爬蟲代碼 **[crawler-img](https://github.com/mingjiezhou/crawle... ...


小白,輕噴,本文教你三分鐘入門爬蟲

前言

有一天發現,阮一峰老師的博客圖片很好看,想收藏一下,因為幾百張,一張張下載太慢,朋友推薦了個谷歌插件(Fatkun)確實挺好用的,這之後就對爬蟲有了興趣,這個項目會整理一些簡單切實用的爬蟲代碼 crawler-img,都是基於 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();

效果圖

總結

爬蟲入門是不是很簡單又好玩,你學會了嗎?


您的分享是我們最大的動力!

更多相關文章
  • 未經允許,禁止🚫轉載,轉載請註明出處:https://www.cnblogs.com/YyyyQ/p/11941537.html 第1步:WIN+R輸出cmd進入命令行 找到JDK安裝路徑進入bin文件夾 第2步:輸入 keytool.exe -list -keystore 加 debug.key ...
  • 作為一個自學前端的靚仔(小白),最開始在我的世界中是沒有前端這個概念的,相當長一段時間內,我一直把前端稱之為「做網站」,是不是有點飄? 1、我眼中的前端 點進來了這篇文章,應該會對前端稍微有那麼一點點瞭解。 高大上一點說:我所見,我所得,皆為前端;大白話:嗯,就是“做網站”的。至於專業的定義,相信搜 ...
  • 一個簡單的Demo,快速瞭解 React.Component 和 React.PureComponent的區別;只需複製代碼就可以看到效果; ...
  • 1.內聯元素垂直居中的設置; 2.頁頭,頁尾拼接; 3.圓角; 1.ajax語法; 2.判斷字元串為空的方法; 3.截取地址欄的參數; 4.用反引號(鍵盤1左邊的)做字元串拼接 ...
  • 當使用Select選擇器時,如果下拉列表的數據量太多,會有一個明顯的卡頓體驗,例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https:/ ...
  • 一:錯誤捕獲 1.try-catch 語句(錯誤捕獲) try{ //這裡放置可能出現問題的代碼 }catch(error){ //錯誤發生時執行的代碼 console.log(error.name) //列印錯誤類型 console.log(error.message) //列印錯誤消息 } 說明 ...
  • 1、字體、文本聲明 聲明語句必須要包含在{}號之中; 屬性和屬性值之間用“:”分隔; 當有多個屬性時,用“;”進行區分; 在書寫屬性時屬性之間使用空格、換行等,並不影響屬性的顯示; 如果一個屬性有多個值,則每個屬性值之間用空格分隔開。 CSS屬性 字體 font size 字體大小屬性:可設置字體的 ...
  • 作用域:使用範圍 全局變數: 聲明的變數是使用var聲明的, 那麼這個變數就是全局變數 全局變數可以在頁面的任何位置使用 除了函數以外, 其他的任何位置定義的變數都是全局變數 局部變數:在函數內部定義的變數,是局部變數,外面不能使用 全局變數,如果頁面不關閉,那麼就不會釋放,就會占空間,消耗記憶體 全 ...
一周排行
  • 比如要拆分“呵呵呵90909086676喝喝999”,下麵當type=0返回的是中文字元串“呵呵呵,喝喝”,type=1返回的是數字字元串“90909086676,999”, private string GetStrings(string str,int type=0) { IList<strin ...
  • Swagger一個優秀的Api介面文檔生成工具。Swagger可以可以動態生成Api介面文檔,有效的降低前後端人員關於Api介面的溝通成本,促進項目高效開發。 1、使用NuGet安裝最新的包:Swashbuckle.AspNetCore。 2、編輯項目文件(NetCoreTemplate.Web.c ...
  • 2020 年 7 月 30 日, 由.NET基金會和微軟 將舉辦一個線上和為期一天的活動,包括 微軟 .NET 團隊的演講者以及社區的演講者。本次線上大會 專註.NET框架構建微服務,演講者分享構建和部署雲原生應用程式的最佳實踐、模式、提示和技巧。有關更多信息和隨時瞭解情況:https://focu... ...
  • #abp框架Excel導出——基於vue #1.技術棧 ##1.1 前端採用vue,官方提供 UI套件用的是iview ##1.2 後臺是abp——aspnetboilerplate 即abp v1,https://github.com/aspnetboilerplate/aspnetboilerp ...
  • 前言 本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。 作者:碧茂大數據 PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取 input()輸入 Python提供了 input() 內置函數從標準輸入讀入一 ...
  • 從12年到20年,python以肉眼可見的趨勢超過了java,成為了當今It界人人皆知的編程語言。 python為什麼這麼火? 網路編程語言搜索指數 適合初學者 Python具有語法簡單、語句清晰的特點,這就讓初學者在學習階段可以把精力集中在編程對象和思維方法上。 大佬都在用 Google,YouT ...
  • 在社會上存在一種普遍的對培訓機構的學生一種歧視的現象,具體表現在,比如:當你去公司面試的時候,一旦你說了你是培訓機構出來的,那麼基本上你就涼了,那麼你瞞著不說,然後又通過了面試成功入職,但是以後一旦在公司被髮現有培訓經歷,可能會面臨被降薪,甚至被辭退,培訓機構出來的學生,在用人單位眼裡就是能力低下的 ...
  • from typing import List# 這道題看了大佬寫的代碼,經過自己的理解寫出來了。# 從最外圍的四周找有沒有為O的,如果有的話就進入深搜函數,然後深搜遍歷# 判斷上下左右的位置是否為Oclass Solution: def solve(self, board: List[List[s ...
  • import requests; import re; import os; # 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, li ...
  • import requests; import re; import os; import parsel; 1.請求網頁 header = { "user-agent":'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537. ...