iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
自我挑戰組

一路side project - 學習筆記系列 第 18

[Day 18] [學習筆記] GU價格提醒系統 (9)-n8n流程整理與佈署

  • 分享至 

  • xImage
  •  

我們昨天終於成功寫入資料庫了,現在把n8n流程串在一起,那我們定期爬蟲寫資料庫就初步完成了。


正歸化

在寫入資料庫前,我要先將拿到的資料進行正歸化,也就是將這些東西轉換成我們資料庫可以吃的。

有幾個重點:

  • 欄位一致化:不同來源欄位名稱不一樣,若不統一,下游查表、JOIN、去重都要寫分支。把不同來源的 product_code / raw.code 統一成 gu_id,名稱統一到 name,避免下游還要判斷多種欄位名。

  • 型別正確化::字串/boolean 混用容易在 DB/分析階段出錯(例如數值排序、聚合)。 價格用 Number(...) 轉數字、in_stock 僅允許 true/false,captured_at 固定 ISO 字串,降低 DB 型別錯誤。

  • 缺值處理與保底:實務資料常有缺漏;直接丟進 DB 容易觸發 not-null/型別錯誤或造成分析 noisy。name 缺失就退回 gu_id,url、list_price 不存在就設 null,確保每筆資料都有可預期的值。

  • 資料過濾:必須同時有價格與代碼。避免髒資料入庫、影響統計。

  • 一致的時間戳:同一次批次共用 nowIso,方便追蹤「這一批」的抓取時間,利於稽核與回溯。

  • 來源標記:固定 source: 'tw_site',之後可跨來源比對或除錯。

  • 結構穩定:categories 一律是陣列(有值則 [cat],否則 []),方便後續擴充成多分類、不必改 schema。

  • 降低下游複雜度:把判斷邏輯丟到每個消費端,會造成重複與不一致。HTTP/DB 節點可以直接拿 payload 入庫,少寫判斷邏輯、錯誤率更低。

完成了以上正歸化 才能接我們的寫入資料庫。


n8n 爬蟲資料流程

跟之前同樣的想法,寫入資料庫後也要檢查是否成功。

  • 增加 "if" 節點進行判斷,若未成功就要用"Discord"通知;若成功了,我們就繼續拿取下一個類別的商品,重複執行邏輯。
  • 此時 n8n workflow會長這樣:
    https://ithelp.ithome.com.tw/upload/images/20251001/201547643vSRUJNCUT.png

為了之後它能夠幫我們定時自動跑這流程,我們需要設立 Schedule Trigger。

https://ithelp.ithome.com.tw/upload/images/20251001/2015476454FxYBFFUK.png

同時並把右上的Active打開,這樣時間一到,它就會幫我們跑這workflow了。
https://ithelp.ithome.com.tw/upload/images/20251001/20154764uT6flvl26k.png

Done (͡ ͡° ͜ つ ͡͡°)


上一篇
[Day 17] [學習筆記] - n8n - API - Postgres (成功一小步 )
下一篇
[Day 19] GU價格提醒系統 (10) - 開始 Vibe Coding 做網頁
系列文
一路side project - 學習筆記21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言