
恭喜你!在學會了如何使用 n8n 打造自動化爬蟲之後,你已經成功地從 PTT、Dcard 或其他新聞網站上,抓取到了寶貴的原始 HTML 資料,並透過 HTML Extract
節點,提取出了文章的標題、作者與日期。但當你興奮地將這些資料寫入 Google Sheets 或發送到 Slack 時,卻發現結果長得像這樣:
- 標題:
\n\t\t\t\t\t\t\t[好雷] 沙丘2:完美的電子遊戲改編\n\t\t\t\t\t\t
- 作者:
\n aabbcc (優文產生器)\n
- 日期:
9/07
這些夾雜著大量空白 ()、換行符 (\n
)、定位符 (\t
) 的「髒數據 (Dirty Data)」,不僅看起來礙眼,更會對你後續的自動化流程造成毀滅性的打擊。你無法根據這種格式的日期進行排序,也無法用這種格式的標題進行精準的關鍵字比對。
這,就是每一位爬蟲開發者都必須面對的第一道、也是最重要的一道關卡:「資料清洗 (Data Cleaning)」。而 n8n 中負責這項任務的最佳利器,正是我們的好朋友——Set
節點。
這篇文章將是你的 n8n 爬蟲資料清洗入門實戰指南。我們將聚焦在最常見的文字清理任務上,一步步教你如何活用 Set
節點與其中強大的 Expressions (表達式),精準地去除掉所有多餘的空白、換行符與無用的前後綴文字,讓你的爬蟲數據,從粗糙的原礦,蛻變為可供分析利用的閃亮黃金。
為什麼爬蟲資料「一定」需要清洗?認識髒數據的隱形殺傷力
許多 n8n 新手在成功抓取到資料後,就急著將其直接應用,卻忽略了資料清洗的重要性。未經清洗的髒數據,至少會帶來三大問題:
- 數據庫與報表汙染: 將
\n aabbcc \n
這樣的資料直接存入你的資料庫或 Google Sheets,會導致你的數據庫充滿無用的字元,不僅佔用空間,更讓後續的數據分析與篩選變得極度困難。 - 自動化邏輯判斷失準: 如果你想用
IF
節點判斷作者是否為aabbcc
,但抓到的資料卻是aabbcc
(前後有空白),那麼你的條件判斷{{ $json.author == 'aabbcc' }}
將會回傳false
,導致流程走向非預期的分支。 - 前端顯示與通知錯亂: 將一個包含大量換行符的標題,直接發送到 Slack 或 Email,會導致訊息的排版完全跑掉,看起來既不專業,也難以閱讀。
因此,在 HTML Extract
節點之後,立刻接上一個 Set
節點來進行資料清洗,應該成為你建構任何爬蟲工作流的標準作業流程。
清洗第一式:trim()
– 輕鬆去除頭尾多餘的空白
這是最基本,也最常用到的清洗技巧。當你抓到的資料,僅僅是前後被多餘的空白字元包圍時(例如:9/07
),trim()
函式就是你的最佳解方。
- 目標: 將欄位
date
的值從9/07
清理成9/07
。 - 解決方案: 在
Set
節點中,修改date
欄位(或新增一個cleaned_date
欄位)。- Name:
date
- Value (使用 Expression):JavaScript
{{ $json.date.trim() }}
- Name:
- 解說:
.trim()
是 JavaScript 中一個內建的字串方法,它會自動刪除一個字串頭部和尾部的所有空白字元,但會保留字串中間的空白。對於清理像日期、數字、ID 這類單純的欄位,它非常有效。
清洗第二式:replace()
與正規表示式 – 徹底剷除所有空白與換行符
trim()
只能處理頭尾,但如果你的資料像 PTT 抓來的標題一樣,中間夾雜著大量的換行符 (\n
) 和定位符 (\t
) 呢?這時,我們需要動用更強大的武器:replace()
函式搭配「正規表示式 (Regular Expression)」。
- 目標: 將欄位
title
的值從\n\t\t [好雷] 沙丘2 \n\t
清理成[好雷] 沙丘2
。 - 解決方案: 在
Set
節點中,修改title
欄位。- Name:
title
- Value (使用 Expression):JavaScript
{{ $json.title.replace(/\s+/g, ' ').trim() }}
- Name:
- 解說:
replace(/\s+/g, ' ')
: 這是這段語法的核心。/\s+/g
是一個正規表示式。\s
代表任何空白字元(包含空格、換行符\n
、定位符\t
等),+
代表一個或多個,g
代表全域尋找與取代。整句話的意思是:「找到這個字串中,所有連續出現的空白字元區塊」。- 第二個參數
' '
代表,將找到的那些區塊,全部用一個單一的空格取代。
.trim()
: 在完成內部的大掃除後,我們再用.trim()
來處理可能還殘留在頭尾的單一空格,確保最終結果的完美。

清洗第三式:精準取代 – 刪除固定的前綴或後綴文字
爬取論壇或特定網站時,我們常常會抓到一些我們不想要的、固定的樣板文字,例如 PTT 作者欄位的「作者:」或看板名稱。
- 目標: 將欄位
author_info
的值從作者: aabbcc (優文產生器)
清理成aabbcc (優文產生器)
。 - 解決方案: 這次我們只需要使用
replace()
函式,並指定要移除的固定文字即可。- Name:
author_info
- Value (使用 Expression):JavaScript
{{ $json.author_info.replace('作者: ', '') }}
- Name:
- 解說: 這個表達式非常直觀:「找到
作者:
這段固定的文字,並將它用''
(空字串) 取代」,也就是直接刪除的意思。
完整實戰演練:將 PTT 爬蟲的原始資料清洗乾淨
現在,讓我們將以上所有技巧,應用到我們先前建立的「每日 PTT 電影版情報」爬蟲工作流中。
流程設計: ...
-> HTML Extract
-> Set (Data Cleaning)
-> Google Sheets
假設 HTML Extract
節點輸出的原始資料 ($json
) 長這樣:
JSON
{
"title": "\n\t\t\t\t [好雷] 芙莉歐莎:瘋狂麥斯傳奇篇章\n\t\t\t ",
"author": " aabbcc (優文產生器) ",
"date": " 5/22 "
}
我們新增一個名為「Data Cleaning」的 Set
節點,並在裡面建立三條規則:
- 清洗 title:
- Name:
title
- Value:
{{ $json.title.replace(/\s+/g, ' ').trim() }}
- Name:
- 清洗 author:
- Name:
author
- Value:
{{ $json.author.trim() }}
- Name:
- 清洗 date:
- Name:
date
- Value:
{{ $json.date.trim() }}
- Name:
經過這個 Set
節點後,輸出的資料就會變成極度乾淨的結構化數據:
JSON
{
"title": "[好雷] 芙莉歐莎:瘋狂麥斯傳奇篇章",
"author": "aabbcc (優文產生-產生器)",
"date": "5/22"
}
現在,再將這份乾淨的資料送往 Google Sheets
或任何後續的流程,就再也不會出錯了!

結語
資料清洗是爬蟲自動化流程中,最重要、也最能體現專業度的環節。它就像是烹飪前處理食材的過程,唯有先將食材(原始數據)清洗乾淨、去除雜質,你才能在後續的烹調(資料應用)中,發揮出它真正的美味。
n8n 的 Set
節點,搭配靈活的 JavaScript Expressions,為我們提供了一個無比強大的視覺化資料清洗工作台。今天我們學會的三大核心技巧——trim()
、replace()
與正規表示式——已經足以讓你應對 90% 以上的文字清理場景。
請養成良好的習慣,在每一個爬蟲的 HTML Extract
節點之後,都加上一個專門負責「清洗」的 Set
節點。這個小小的動作,將會讓你的自動化流程變得無比穩定與可靠,也讓你產出的數據,真正地具備了商業價值。
更多精選文章請參考
n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析
開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案
n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!
n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!