資訊,就像一大堆散落的拼圖。只有先分門別類,才能拼出想要的全貌。
昨天我們正式啟動了「資料獵人養成記」,要用 n8n 打造自動化爬蟲流程,從網站上抓出 1000 本書的資料。
但很快你會遇到一個問題:
爬回來的資料,像一大團黏在一起的麻花球,沒辦法一筆筆處理。
今天我們要學會如何把資料拆開,再把想要的資料組合回來。
這就是資料處理的兩大基礎:分離(Split)與合併(Merge)。
如果你不懂這一步,後面所有的迴圈與自動化都會變成一團亂麻!
本篇的工作流可在此下載。(下載連結)
在 Day 8、Day 9,我們已經可以用 HTML 節點把首頁的 20 本書資料抓回來,包含:
title
url
執行 HTML 節點後,在 n8n 裡可以用 Schema / Table / JSON 三種方式來看資料,其實是同一份資料的不同視覺呈現。
我們先從 Table 檢視看結果,會長這樣:
看起來像有 20 筆資料,但注意——這整個表格其實只是一個 item(項目),裡面兩個欄位各塞了 20 筆資料,這些 20 筆其實是「陣列(array)」。
我們從 JSON 檢視會更清楚:
[
{
"title": [
"A Light in the Attic",
"Tipping the Velvet",
"...",
"It's Only the Himalayas"
],
"url": [
"catalogue/a-light-in-the-attic_1000/index.html",
"catalogue/tipping-the-velvet_999/index.html",
"...",
"catalogue/its-only-the-himalayas_981/index.html"
]
}
]
[]
表示「陣列」{}
表示「JSON 物件」在 HTML 節點中,你會看到每個欄位(如 title、url)右邊都有一個 「Return Array」拉條,開啟後會回傳陣列,關掉則只會傳第一筆。
舉例:如果關掉 title
的「Return Array」,就只會得到第一筆書名:
title | url |
---|---|
A Light in the Attic | 0:catalogue/a-light-in-the-attic_1000/index.html |
1:catalogue/tipping-the-velvet_999/index.html | |
… |
現在,我們想要讓這 20 本書的資料變成 20 個 item,才能讓流程一筆筆處理。
Return Array
都打開title
輸出就會變成這樣:
title |
---|
A Light in the Attic |
… |
[
{"title": "A Light in the Attic"},
{"title": "Tipping the Velvet"},
...
]
注意:Split Out 一次只能處理一個欄位。
如果我們再拉出另一條流程,Split 出 url
,會得到:
url |
---|
catalogue/a-light-in-the-attic_1000/index.html |
… |
這時我們有了兩條分開的資料線,一條是 20 筆書名、一條是 20 筆網址。
接下來,我們要把剛剛拆開的 title
和 url
重新合併在一起,一筆書名對應一筆網址:
title
的 Split Out 接到「Input 1」,url
的 Split Out 接到「Input 2」這樣會把資料直接上下堆疊,變成 40 筆 item:
title |
---|
A Light in the Attic |
… |
url |
catalogue/a-light-in-the-attic_1000/index.html |
… |
[
{"title": "A Light in the Attic"},
...
{"url": "catalogue/a-light-in-the-attic_1000/index.html"},
...
]
接著,試試把 Mode 改成 Combine,Combine By:Position
這會依照順序合併第 1 筆 title + 第 1 筆 url,得到 20 筆完整資料:
title | url |
---|---|
A Light in the Attic | catalogue/a-light-in-the-attic_1000/index.html |
Tipping the Velvet | catalogue/tipping-the-velvet_999/index.html |
… | … |
[
{
"title": "A Light in the Attic",
"url": "catalogue/a-light-in-the-attic_1000/index.html"
},
...
]
⚠️ 小提醒:如果兩組資料數量不同,會只合併出較少的那一組數量。
n8n 的資料,其實就是「一堆 JSON 物件組成的陣列」:
[
{"key1": "value1"},
{"key1": "value2"},
...
]
{}
是一個 item容易混淆的是:
JSON 裡的值,也可以是陣列或 JSON,但那不是 n8n 的 item。
這也是為什麼有時候「看起來有很多筆資料,卻沒辦法用迴圈處理」,因為那其實只是同一個 item 裡的陣列。
今天學的 Split Out + Merge,
就是把「一個 item 裡的陣列」→ 拆成「很多 item」→ 再依需求重新合併,
是資料處理的必備心法 ✨
今天的任務是觀察資料的變化:
這一步學會後,接下來我們就能把資料送進 Airtable,開始真正「存進資料庫」啦!
(明天 Day 18 就要開始 ✨)
我建立了一個行銷技術交流群,專注討論 SEO、行銷自動化等主題,歡迎有興趣的朋友一起加入交流。
掃QR Code 或點擊圖片加入