iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
生成式 AI

30 天生成式 AI 工作流:社群經營者的自動化實戰系列 第 17

Day 17|資料獵人養成記(1)讓資料乖乖排隊:分離與合併 🧩

  • 分享至 

  • xImage
  •  

資訊,就像一大堆散落的拼圖。只有先分門別類,才能拼出想要的全貌。

昨天我們正式啟動了「資料獵人養成記」,要用 n8n 打造自動化爬蟲流程,從網站上抓出 1000 本書的資料。

但很快你會遇到一個問題:

爬回來的資料,像一大團黏在一起的麻花球,沒辦法一筆筆處理。

今天我們要學會如何把資料拆開,再把想要的資料組合回來。

這就是資料處理的兩大基礎:分離(Split)與合併(Merge)

如果你不懂這一步,後面所有的迴圈與自動化都會變成一團亂麻!

本篇的工作流可在此下載。(下載連結


從 Day 8 / Day 9 的成果開始:我們目前抓到什麼?

https://ithelp.ithome.com.tw/upload/images/20250914/20178495uzr0GSz6HM.png

在 Day 8、Day 9,我們已經可以用 HTML 節點把首頁的 20 本書資料抓回來,包含:

  • 書名 title
  • 詳細頁連結 url

執行 HTML 節點後,在 n8n 裡可以用 Schema / Table / JSON 三種方式來看資料,其實是同一份資料的不同視覺呈現


n8n 資料的關鍵概念:item vs array

我們先從 Table 檢視看結果,會長這樣:

https://ithelp.ithome.com.tw/upload/images/20250914/20178495GgPYoc5ivf.png

看起來像有 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 物件」
  • 每個 JSON 物件就是一個 item

在 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

Split Out 節點:把一團麻花球拆成 20 顆珍珠 🌟

現在,我們想要讓這 20 本書的資料變成 20 個 item,才能讓流程一筆筆處理。

  1. 先把 HTML 節點的 Return Array 都打開
  2. 在 HTML 後面接上一個 Split Out 節點
  3. 在「Fields To Split Out」填入 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 筆網址。


Merge 節點:把 2 條資料粘合在一起 💍

接下來,我們要把剛剛拆開的 title 和 url 重新合併在一起,一筆書名對應一筆網址:

  1. 新增一個 Merge 節點,在設定中「Number of Inputs」填 2
  2. 在白板上,把 title 的 Split Out 接到「Input 1」,url 的 Split Out 接到「Input 2」
  3. 打開 Merge 節點設定,先試試 Mode:Append

這樣會把資料直接上下堆疊,變成 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 資料傳遞的本質 📦

n8n 的資料,其實就是「一堆 JSON 物件組成的陣列」:

[
  {"key1": "value1"},
  {"key1": "value2"},
  ...
]
  • 每個 {} 是一個 item
  • 一個流程會一筆筆處理 item(像傳送帶一樣)

容易混淆的是:

JSON 裡的值,也可以是陣列或 JSON,但那不是 n8n 的 item。

這也是為什麼有時候「看起來有很多筆資料,卻沒辦法用迴圈處理」,因為那其實只是同一個 item 裡的陣列

今天學的 Split Out + Merge,

就是把「一個 item 裡的陣列」→ 拆成「很多 item」→ 再依需求重新合併,

是資料處理的必備心法 ✨


小作業 🎯

今天的任務是觀察資料的變化:

  • 嘗試在 HTML、Split Out、Merge 三個節點中,做不同設定
  • 在 Schema / Table / JSON 三種檢視中比對資料結構變化
  • 嘗試用 Combine 與 Append 不同模式,看看輸出有何差異

這一步學會後,接下來我們就能把資料送進 Airtable,開始真正「存進資料庫」啦!

(明天 Day 18 就要開始 ✨)


交流

我建立了一個行銷技術交流群,專注討論 SEO、行銷自動化等主題,歡迎有興趣的朋友一起加入交流。

掃QR Code 或點擊圖片加入

https://ithelp.ithome.com.tw/upload/images/20250901/20178495xURUZaqziV.jpg


上一篇
Day 16|資料獵人養成記(0):打造你的第一條「爬蟲生產線」 🕸️
下一篇
Day 18|資料獵人養成記(2)把資料放進口袋:外部儲存與讀取 📜
系列文
30 天生成式 AI 工作流:社群經營者的自動化實戰21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言