🚀 如何用 n8n 解鎖教育部大專教師資料庫!搞定自動化資料抓取?(前篇)

拒絕推薦委員資料「校對地獄」!用 n8n 打造精準核對的自動化防線

在日常的行政或專案工作中,邀請與推薦審查委員是一項常見卻極具考驗的任務。最近辦公室的同事在推薦各式委員時,經常在「資料校正與核對」上遇到瓶頸——人工手動去搜尋、複製老師的學校、系所和學術專長,不僅耗時費力,更因為資料繁雜,總是不可避免地產生許多疏漏與錯誤。

為了徹底解決這個痛點、提升團隊的資料準確度,我決定利用 n8n,直接串接教育部的「大專校院系所教師資訊網」。現在,使用者只需要輸入推薦委員的姓名,系統就會自動精準查詢並撈回老師的完整資訊,進而做後續的自動化運用與核對。接下來,就讓我帶大家看看這個能拯救全辦公室工作效率的自動化成果與技術細節!

三步驟完成教育部網站的自動化資料對接

教育部的教師資訊網使用的是 ASP.NET 框架 。這類系統對查詢參數的結構、物件層級和大小寫有著非常嚴格的規範 。如果我們直接發送傳統、扁平化的 POST 請求到它的首頁路由,伺服器通常會因為無法將參數對應(Bind)到後端的程式模型,而直接拋出 404 Not Found415 錯誤

為了順利與教育部資料庫進行數據對接,請跟著以下三個核心步驟進行工作流設定:

🛠️ 步驟一:分析並找出標準的非同步(Fetch/API)傳輸接口(這一步相當重要,但每個網站有可能會有不同方式)

這個網站的搜尋行為是採用現代化的非同步請求 (Fetch/API) 模式在背景傳輸資料

  1. 在瀏覽器打開「大專校院系所教師資訊網」,按下 F12 開啟開發者工具 。
  2. 切換到 Network (網路) 分頁,並勾選 Fetch/XHR
  3. 正常輸入一個名字按下搜尋,你會在清單中抓到一個名為 search?index=1&limit=10 的請求 ,這就是我們要直接進行資料串接的 API 接口 !
🛠️ 步驟二:精準配置 n8n HTTP Request 節點

找到核心 API 後,我們必須在 n8n 的 HTTP Request 節點中完整模擬標準的發送格式 ,確保傳輸結構符合後端伺服器的預期:

HTTP Request 節點設定

  • Method :選擇 POST
  • URLhttps://udb.moe.edu.tw/ulist/Teacher/search?index=1&limit=10
  • Send Headers :開啟
  • Specify Headers:Specify Headers
  • Headers:
    • X-Requested-With : XMLHttpRequest (明確宣告這是非同步 API 請求)
    • Referer : https://udb.moe.edu.tw/ulist/Teacher (提供正確的來源網頁校驗)
    • Content-Type : application/json
  • Send Body :開啟
  • Body Content Type:選擇 JSON
  • Specify Body:Using JSON
  • JSON (切換至 Expression模式):必須完整填入網站所需的巢狀物件結構,包含那些空的陣列欄位,因為後端會進行完整性檢查,缺一不可
{
  "BuildType": [],
  "UniversityType": [],
  "UniversityId": [],
  "ISCEDId": [],
  "UnitName": "",
  "ContractRank": [],
  "Position": [],
  "TeacherName": "{{ $json['委員查詢'].json.target_name }}"
} 
🛠️ 步驟三:使用「Split Out + Code 節點」進行批量拆解與字串清洗

當教育部 API 回傳 200 OK 成功回應後,它吐出來的會是一大串包裹在 JSON 裡面的 HTML 資料列 。為了能「一次處理多位老師」,我們必須在後面接上這兩個關鍵節點:

1.Split Out 節點:

  • Field to Split Out:填入 teacher_rows
  • 作用:將回傳包含好幾位老師的大陣列,拆解成一個個獨立的 Item 。n8n 偵測到多筆 Items 後,後續的節點就會自動切換成「自動迭代模式」,幫你一個接一個處理,非常適合批量核對 。

2.Code 節點 (設定 Mode 為 Run Once For Each Item)

  • 在這裏我們直接寫一小段 JavaScript,利用「正規表達式 (Regex)」去精準切開每一個 HTML 標籤 。
  • 透過陣列索引直接對號入座(例如:索引 [2] 對應學校名稱、[3] 對應單位、[6] 對應姓名) ,並且從最後一格的超連結標籤中精準挖出 href 的「純網址」 。這招是資料清洗的保底手段,完全不用擔心網頁文字夾雜多餘空白或換行符號的干擾 !
總結

把教育部的教師資料庫成功轉化為乾淨、分明的 JSON 結構資料後,後續的整個自動化流程的底層就打通了!

未來不論你是想把這群委員的資料自動寫入 Google Sheets 進行核對 ,或是想透過這些資料利用AI進行延伸性的查詢,都能擁有更精確的資料來源。

在這個自動化的流程中,後來也發現同名同姓的老師也蠻多,因此後續還處理了當輸入姓名查無資料多筆資料時的解決方案,要讓使用者重新輸入。但目前尚在進行中,所以有類似資料核對困擾的朋友,快把這套串接方法應用到你的工作流中吧!

發佈留言

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