1. 程式人生 > >node.js抓取網路圖片儲存到本地,node.js抓取防盜鏈網路圖片儲存到本地

node.js抓取網路圖片儲存到本地,node.js抓取防盜鏈網路圖片儲存到本地

node.js抓取網路圖片儲存到本地,node.js抓取防盜鏈網路圖片儲存到本地

使用模組request、fs,request模組在npm裡平均月下載量超過3000W次,那是相當的牛逼。

node版本8.0+,如果版本是8.0以下呼叫的時候就直接用promise。

封裝

common.js
let request = require("request");
let fs = require("fs");

class Ut {
  /**
	 * 下載網路圖片
	 * @param {object} opts 
	 */
  static downImg(opts = {}, path = '') {
    return new Promise((resolve, reject) => {
      request
        .get(opts)
        .on('response', (response) => {
          console.log("img type:", response.headers['content-type'])
        })
        .pipe(fs.createWriteStream(path))
        .on("error", (e) => {
          console.log("pipe error", e)
          resolve('');
        })
        .on("finish", () => {
          console.log("finish");
          resolve("ok");
        })
        .on("close", () => {
          console.log("close");
        })

    })
  };
}

module.exports = Ut;

測試普通網路圖片

test.js 下載csdn自己的頭像
let Ut = require("./common");

(async () => {
  try {
    let url = "http://avatar.csdn.net/1/A/1/3_zzwwjjdj1.jpg";
    let opts = {
      url: url,
    };
    let path = "./1.jpg";
    let r1 = await Ut.downImg(opts, path);
    console.log(r1);
  }
  catch (e) {
    console.log(e);
  }
})()

執行

node test.js

測試防盜鏈圖片

http://i.meizitu.net/thumbs/2018/01/117406_24c17_236.jpg
let Ut = require("./common");

(async () => {
  try {
    let url = "http://i.meizitu.net/thumbs/2018/01/117406_24c17_236.jpg";
    let opts = {
      url: url,
    };
    let path = "./2.jpg";
    let r1 = await Ut.downImg(opts, path);
    console.log(r1);
  }
  catch (e) {
    console.log(e);
  }
})()
執行node  test.js得到的不是原圖,原圖是個妹子圖片

這個時候就要分析原網站防盜鏈的方法,這個網站需要在頭部加上 Referer:http://www.mzitu.com/
let Ut = require("./common");

(async () => {
  try {
    let url = "http://i.meizitu.net/thumbs/2018/01/117406_24c17_236.jpg";
    let opts = {
      url: url,
      headers: {
        'Referer': 'http://www.mzitu.com/',
      }
    };
    let path = "./2.jpg";
    let r1 = await Ut.downImg(opts, path);
    console.log(r1);
  }
  catch (e) {
    console.log(e);
  }
})()
再次執行node test.js 就會得到原圖

完成。

相關推薦

node.js網路圖片儲存本地,node.js防盜網路圖片儲存本地

node.js抓取網路圖片儲存到本地,node.js抓取防盜鏈網路圖片儲存到本地 使用模組request、fs,request模組在npm裡平均月下載量超過3000W次,那是相當的牛逼。 node版本

簡單的ajax+express+superagentcnode.js圖片(瞎幾把

寫這篇部落格的原因:   本小白學完在cnode的node課程中學到正則的應用,30分鐘 入門正則,看著樣例手癢,於是抓了cnode上的所有圖片,也不知道有沒有侵犯肖像權,23333,無意冒犯~~抓取的物件: 利用原生AJAX進行互動的時候,多次卡在響應頭設定,導致出

如何你所看到的網頁中的js特效(如:多圖片上傳的js特效)

首先在谷歌瀏覽器中搜索你想要的js特效(如:多圖片上傳功能的js特效),找到之後開啟對應的頁碼,按F12開啟除錯介面,如下:找到除錯介面的Source選項,然後對應的Network --> iframe,然後開啟下面的原始碼檔案,如圖片:img選項為:在圖片上點選右鍵的

php將圖片接下載到本地

mage inf 返回值 抓取 成功 png web目錄 本地 完成 備註: fclose這一步操作完成之後如果返回值是空表示下載成功,否則會返回1或者其他錯誤提示 這個步驟測試的時候實在yii2框架的基礎上執行的,下載到的圖片實在frontend目錄下的we

入門須知之網路爬蟲的基本流程及策略

大資料時代下,資料採集推動著資料分析,資料分析推動發展。但是在這個過程中會出現很多問題。拿最簡單最基礎的爬蟲採集資料為例,過程中就會面臨,IP被封,爬取受限、違法操作等多種問題,所以在爬去資料之前,一定要了解好預爬網站是否涉及違法操作,找到合適的代理IP訪問網站等一系列問題。 掌握爬蟲技術也成為現在技術流的

[Python]網路爬蟲(一):網頁的含義和URL基本構成

一、網路爬蟲的定義 網路爬蟲,即Web Spider,是一個很形象的名字。 把網際網路比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。 網路蜘蛛是通過網頁的連結地址來尋找網頁的。 從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它連結地址

python網路爬蟲(五):併發

在進行單個爬蟲抓取的時候,我們不可能按照一次抓取一個url的方式進行網頁抓取,這樣效率低,也浪費了cpu的資源。目前python上面進行併發抓取的實現方式主要有以下幾種:程序,執行緒,協程。程序不在的討論範圍之內,一般來說,程序是用來開啟多個spider,比如我

Tensorflow訓練卷積神經網路儲存模型,載入模型並匯入手寫圖片測試

        剛學習tensorflow,折騰了這幾天,之前一直按照書上的教程訓練網路,看那些沒玩沒了的不斷接近於1的準確率,甚是無聊,我一直想將辛辛苦苦訓練出來的網路,那些識別率看上去很高的網路,是否能真正用來識別外面匯入的圖片呢,而不僅僅是那些訓練集或者測試集的圖片。

SSM 實訓筆記 -10- 使用 sessionStorage 儲存資料、js 圖片驗證碼、登入載入動畫

SSM 實訓筆記 -10- 使用 sessionStorage 儲存資料、js 圖片驗證碼、登入載入動畫 本篇內容: (1)在登入成功時,使用 sessionStorage 儲存使用者的使用者名稱,並在登入成功後的首頁上展示使用者名稱。 (2)js 圖片驗證碼,使用 js 和

vue中,本地圖片路徑寫到js中,為何渲染不出來?

首先看一個專案 目錄結構: 程式碼如下: html: <img src="../../assets/logo.png" alt=""> 編譯效果: 是不是圖片顯示出來了,但是如果我的圖片路徑是寫到data裡面的,在img上面,繫結一個d

【python】根據圖片連結(地址)圖片

參考:https://bbs.csdn.net/topics/391929530成功了import urllib urllib.urlretrieve('圖片連結http://', 'f:/自己的本地地址.jpg')

JFrame實現無邊框,實現拖動,實現關閉按鈕,開啟實現儲存檔案到本地,實現頭像放大功能,實現圖片瀏覽器

package SwingTest3; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.even

PHP處理Form表單提交的裁剪後的base64的圖片儲存 以cropbox.js控制元件為例

我在開發專案的時候,前端給的上傳頭像外掛是 cropbox.js ,當時覺得很好用,可是當要儲存圖片的時候問題來了,不知道怎麼儲存,百度了一大堆,發現很多人跟我一樣也沒有找到方法,不過思路都是一樣的,

網路爬蟲基本工作流程和策略

         網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。   網路爬蟲是捜索引擎抓取系統的重要組成部分

python3實現網路爬蟲(1)--urlopen網頁的html

準備開始寫一些python3關於爬蟲相關的東西,主要是一些簡單的網頁爬取,給身邊的同學入門看。 首先我們向網路伺服器傳送GET請求以獲取具體的網頁,再從網頁中讀取HTML內容。        我們大家平時都使用網路瀏覽器,並且它已經成為我們上網不可或缺的軟體。它建立資訊的資

玩轉圖片上傳————原生js XMLHttpRequest 結合FormData對象實現的圖片上傳

con tel ech 圖片 xmlhttp scrip state clas document var form=document.getElementById("formId"); var formData=new FormData(form);

方便大家學習的Node.js教程(一):理解Node.js

圖形 -1 iter pri attribute set run 相對 mage 理解Node.js 為了理解Node.js是如何工作的,首先你需要理解一些使得Javascript適用於服務器端開發的關鍵特性。Javascript是一門簡單而又靈活的語言,這種靈

node.js零基礎詳細教程(4):node.js事件機制、node異步IO操作

nod server nbsp node i++ 兩個 con 錯誤 定時器 第四章 建議學習時間3小時 課程共10章 學習方式:詳細閱讀,並手動實現相關代碼 學習目標:此教程將教會大家 安裝Node、搭建服務器、express、mysql、mongodb、編寫後臺業務邏

node.js零基礎詳細教程(7):node.js操作mongodb,及操作方法的封裝

font 裏的 ges 格式 上進 ins 方法 回調函數 方式 第七章 建議學習時間4小時 課程共10章 學習方式:詳細閱讀,並手動實現相關代碼 學習目標:此教程將教會大家 安裝Node、搭建服務器、express、mysql、mongodb、編寫後臺業務邏輯、編寫接口

從視頻中提取圖片,對圖片做人臉檢測並截人臉區域

rep pan details 一個 ons sprintf imread href multipl 環境配置:VS2013+opencv2.4.10+libface.lib 參考博客:http://blog.csdn.net/augusdi/article/details