n8n 爬蟲進階:如何自動下載網頁圖片、PDF 與任何檔案 (附實戰範例)

n8n 下載圖片

當你掌握了 n8n 爬蟲的基礎,能夠從網頁上輕鬆提取文字和連結後,你很快就會遇到下一個更具挑戰性的任務:如何自動下載網頁上的圖片、PDF 報告、CSV 數據表,或其他任何類型的檔案?

你可能想:

  • 每天自動從你喜愛的攝影網站,下載最新的高畫質桌布。
  • 批次抓取競爭對手電商網站上,數百張高清的商品圖片。
  • 自動登入供應商後台,下載每個月的 PDF 對帳單並歸檔。

這些「檔案下載」的需求,與我們之前處理的「文字抓取」有著本質上的不同。它不再只是單純地解析 HTML,而是需要處理「二進制資料 (Binary Data)」。幸運的是,n8n 為此提供了完整且直觀的解決方案。

這篇文章將是你的 n8n 檔案下載終極指南。我們將帶你深入理解 n8n 如何處理二進制資料,並透過一個「偵查 -> 下載 -> 儲存」的三部曲實戰教學,手把手教你如何建立一個能夠自動從 Unsplash 這類圖庫網站,下載高品質圖片的完整工作流。

從文字到檔案:認識 n8n 中的「二進制資料 (Binary Data)」

在我們動手之前,必須先建立一個核心觀念。在 n8n 的世界裡,資料主要有兩種形式:

  1. JSON 資料 (JSON Data): 這是我們最熟悉的格式,n8n 中絕大多數的資料都是以 JSON 物件的形式在節點之間流動。它非常適合用來表示結構化的文字資訊,例如 {"name": "John", "age": 30}
  2. 二進制資料 (Binary Data): 圖片 (JPG, PNG)、PDF 文件、ZIP 壓縮檔、影片等,這些都不是單純的文字,它們在電腦中是以一長串 01 的二進制數據流存在的。n8n 為了處理這類資料,設計了一個特殊的「二進制資料」屬性。

當一個節點(例如 HTTP Request)成功下載了一個檔案後,它會在輸出的 Item 中,附加一個名為 binary 的特殊屬性。所有後續需要處理這個檔案的節點(例如 Write Binary FileGoogle Drive),都會自動去讀取這個 binary 屬性中的內容。

我們的任務,就是要透過工作流,完成從「找到檔案 URL」到「觸發下載並生成二進制資料」再到「將二進制資料儲存起來」的完整過程。

檔案下載的三部曲 (一):用 HTML Extract 節點抓取檔案 URL

在下載任何檔案之前,我們必須先知道它的「地址」,也就是這個檔案的直接連結 (Direct URL)。這一步,就是一個標準的網頁爬蟲任務。

  • 目標: 從一個網頁中,提取出所有 <img> 圖片標籤的 src 屬性,或是所有 <a> 下載連結標籤的 href 屬性。
  • 核心工具: HTML Extract 節點。

操作步驟:

  1. 使用 HTTP Request 節點抓取目標網頁的 HTML。
  2. 連接 HTML Extract 節點。
  3. Extraction Values > Add Value:
    • Key: imageUrl (或 fileUrl)
    • CSS Selector: img.product-image (抓取圖片) 或 a.download-link (抓取下載連結)。
    • Return Value: Attribute
    • Attribute: src (對於 <img> 標籤) 或 href (對於 <a> 標籤)。

完成這一步後,你的 n8n 就會輸出一系列的 Items,每一個 Item 都包含了一個指向具體檔案的直接 URL。

n8n 下載圖片

檔案下載的三部曲 (二):用 HTTP Request 節點下載檔案內容

現在我們有了檔案的地址,下一步就是派 HTTP Request 節點去把檔案的「內容」拿回來。這一步是整個流程中最關鍵的設定。

  • 目標: 根據上一步抓取到的 URL,下載檔案的二進制數據。
  • 核心工具: HTTP Request 節點。

操作步驟:

  1. HTML Extract 的輸出,連接到一個新的 HTTP Request 節點。n8n 的自動迴圈機制會為我們抓到的每一個 URL,都執行一次這個下載請求。
  2. URL (使用 Expression): {{ $json.imageUrl }} (動態地從傳入的 Item 中,讀取我們要下載的 URL)。
  3. 關鍵設定: 點開「Options」分頁。
    • Response Format: 將預設的 JSON,改為 File

這個「Response Format: File」的設定,是在告訴 n8n:「我預期這次請求的回應,不是一段 JSON 文字,而是一個檔案。請你將收到的數據,當作『二進制資料』來處理。」

執行這個節點後,你會在輸出中看到,每一個 Item 的 binary 屬性下,都包含了一個檔案,並附有其檔名 (File Name) 和媒體類型 (MIME Type)。

檔案下載的三部曲 (三):用 Write Binary File 儲存你的成果

我們已經成功地將檔案的二進制數據下載到 n8n 的記憶體中了。最後一步,就是將這些數據,儲存成一個真實的檔案。

  • 目標: 將下載的二進制資料,寫入到 n8n 伺服器運行的本地資料夾中。
  • 核心工具: Write Binary File 節點。

操作步驟:

  1. 將下載用的 HTTP Request 節點,連接到 Write Binary File 節點。
  2. File Path: 設定你要儲存檔案的路徑與檔名。這個欄位支援 Expression,讓你能動態命名。
    • 範例: /data/downloads/{{ $binary.fileName }}
    • 解說: $binary.fileName 是一個特殊的變數,可以自動獲取 n8n 從下載過程中識別到的原始檔名。
  3. Input Field Name: data (這是預設值,代表我們要寫入的是 binary 屬性中的 data 部分)。

完整實戰演練:打造一個「Unsplash 圖片」自動下載器

  • 目標: 搜尋 Unsplash (一個對開發者友善的免費圖庫) 上關於「Taiwan」的圖片,並下載搜尋結果第一頁的所有圖片。
  • 流程設計: Start -> HTTP Request (抓取搜尋頁) -> HTML Extract (提取圖片URL) -> HTTP Request (下載圖片) -> Write Binary File (儲存圖片)
  1. HTTP Request (抓取搜尋頁):
    • URL: https://unsplash.com/s/photos/taiwan
    • Headers: 記得設定 User-Agent 來偽裝成真實瀏覽器。
  2. HTML Extract (提取圖片URL):
    • CSS Selector: img[itemprop="thumbnailUrl"] (這是 Unsplash 搜尋結果圖片的 Selector 之一,可能會變動)。
    • Return Value: Attribute, Attribute: src
  3. HTTP Request (下載圖片):
    • URL (Expression): {{ $json.src }}
    • Options > Response Format: File
  4. Write Binary File (儲存圖片):
    • File Path (Expression): /data/unsplash_images/taiwan_{{ $runIndex }}.jpg
    • 解說: 我們使用 $runIndex (迴圈的執行次數) 來為每一張下載的圖片,產生一個獨一無二的檔名,避免檔案互相覆蓋。

啟用這個流程後,n8n 就會為你自動完成搜尋、解析、下載、儲存的所有步驟!

進階應用:將下載的檔案自動上傳到 Google Drive

如果你不想將檔案儲存在 n8n 的本地伺服器,而是想直接歸檔到雲端,流程也同樣簡單。你只需要將最後一步的 Write Binary File 節點,替換成對應的雲端儲存節點即可。

  • 目標: 將 Unsplash 下載的圖片,自動上傳到 Google Drive 的「桌布收藏」資料夾。
  • 替換節點:
    • HTTP Request (下載圖片) 節點的輸出,改為連接到 Google Drive 節點。
    • Operation: Upload
    • Parent Folder ID: 填入你的「桌布收藏」資料夾的 ID。
    • Binary Property: data (告訴 Google Drive 節點,要上傳的檔案內容,在 binary 屬性中)。
    • File Name (Expression): taiwan_wallpaper_{{ $runIndex }}.jpg
n8n 下載圖片

結語

n8n 讓「檔案下載」這項看似複雜的爬蟲任務,變得有條不紊。透過「抓取 URL -> 下載 Binary -> 儲存 File」這個標準的三部曲流程,你可以清晰地將任務拆解,並利用 n8n 強大的節點生態系,將成果儲存到任何你想要的地方。

掌握了檔案的自動化下載與歸檔能力,你的 n8n 爬蟲就不再只是一個資訊的「閱讀者」,更是一個數位資產的「收藏家」。從今天起,就去打造一個專屬於你的圖片、報告或任何文件的自動化下載工作流吧!

更多精選文章請參考

n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析

開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案

n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!

n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!

【n8n 教學】最強 n8n 網頁爬蟲指南,免寫程式也能輕鬆抓取網站資料!

【n8n 教學全攻略】2025最新!從入門到串接實戰,打造你的自動化工作流

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端