www.com.tw 資料轉換匯出程式
簡介
『交叉查榜::落點分析 www.com.tw』是一個公開提供去識別化後的各學年度各大專院校的繁星、學測個人申請、分科測驗等榜單資料與交叉查榜的網站,不過網站上的資料除了經過去識別化程序部份遮蔽了應試證號碼與考生姓名以外,還使用了許多方式來阻礙直接將網頁中的資料轉存到 Excel 試算表中:
- 使用 Cloudflare 的機器人管理功能做網路爬蟲偵測與阻擋
- 正、備取資訊以及部份遮蔽後的應試號碼與學生姓名使用圖片呈現,並且以 data URI 的方式編碼後直接內嵌在頁面 HTML 中
「www.com.tw 資料轉換匯出程式」是一個針對上述第 2 點做處理,使用 Node.js 寫成的命令列工具程式,功能是能把由 www.com.tw 的「學測查榜」與「大學繁星」兩個項目中的目標頁面 HTML 原始碼檔案,轉換成 XLSX 格式的 Excel 檔案。
「www.com.tw 資料轉換匯出程式」主要利用了以下幾個 Node.js 的套件:
- jsdom - jsdom 模擬了大多數的 DOM API,主要是用來解析 HTML 文件的內容。
- exceljs - exceljs 是一個純 JavaScript 實作的 Excel 工作簿管理員,可以用來讀取、輸出、操作 XLSX 工作簿。
- better-sqlite3 - better-sqlite3 是 Node.js 環境的 SQLite 支援模組,可以用來管理、建立、與使用 SQLite 支援的 SQL 進行資料操作。
其餘還使用了一些輔助性的套件如 data-uri-to-buffer、jimp 等等。
www.com.tw 除了使用 Cloudflare JS Challenge 防堵爬蟲程式以外,還把一些部分的資訊以圖檔 data URI 的方式內嵌在頁面上。理論上要解析這些部分的資料,需要使用到 OCR 辨識,但因為使用開源的 Tesseract OCR 4/5 測試後發現辨識率不穩定且偏低,因此本程式並沒有做 OCR,而是對正、備取序這樣的重複性固定內容建立對照表,用對照表「轉換」圖檔成對應的文字。不過現階段這個對照表並不完整,所以轉換有可能會有遺漏,殘留 HTML 標籤在檔案中。
會使用 Node.js 來撰寫這個轉換程式的原因除了因為比較熟悉以外,還有 JavaScript 本身就是網頁用的程式語言,因此拿來做網頁內容的解析會比較方便。另外 Node.js 在主要的作業系統平台上都有,所以用 Node.js 寫的程式就比較容易可以在各個平台上執行,比較不會被綁定在某個特定的平台上。
目前這個程式只能算是 PoC (Proof-of-Concept 概念驗證) 實作而已,還有相當多的改進空間。
由於「學測個人申請競爭校系對戰分析」與原本的「www.com.tw 資料轉換匯出程式」實際上共用了超過 50% 的程式碼,因此在 0.3.0 版開始,將「學測個人申請競爭校系對戰分析」的功能併入「www.com.tw 資料轉換匯出程式」程式中。
下載
- 0.3.1 版
- 檔案雜湊值:
MD5: e395d1666c9f89c9062e15bef1817406
SHA256: 5c6da10b805ece211895a3e39302b54cc5446cf02a18070f01bc5027326ce76e - 發行時間:2026年3月31日
- 與前一版的差異:
- 修改部份除錯訊息的輸出方式,增加除錯訊息的可讀性。
- 應川田的要求修改「學測個人申請競爭校系對戰分析」計算時某些內部欄位的儲存方式,以便後續若需要對該欄位資料進行分析時可以方便使用。
- 新增命令列選項「--save_db」方便能在不啟用除錯模式下將「學測個人申請競爭校系對戰分析」計算用的資料庫進行存檔。
- 修正與更新正備取圖形轉文字對照表的內容。
- 檔案雜湊值:
- 0.3.0 版
- 檔案雜湊值:
MD5: 4a4917e059182bd7294e4ad9cc7b58f1
SHA256: 8d0ff9a85abf39bb8dcda130d9a5d0169bfdffd5f5209237af326c2159874112 - 發行時間:2026年3月25日
- 與前一版的差異:
- 正式合併「學測個人申請競爭校系對戰分析」的功能。
- 大幅度改寫程式結構,讓程式內部更加模組化。
- 輸入的 HTML 資料不再只限於一次一個,讓程式可以接受多個 HTML 原始碼檔案,並視輸出要求為單純的資料轉換或競系分析,將各年度資料以不同工作表的方式成現在最終輸出的 Excel XLSX 工作簿內。
- 檔案雜湊值:
- 0.2.1 版
- 檔案雜湊值:
MD5: 00c68798fb88dd20a41427b97640c0e7
SHA256: 7a3f7dbf7d4e8ae18ec5cdc7c62195f18b3f36784c1e855439ac05e4571b834a - 發行時間:2025年9月26日
- 與前一版的差異:
- 修正程式內解析器處理某些非正常格式資料的處理方式。
- 檔案雜湊值:
- 0.2.0 版
- 檔案雜湊值:
MD5: 1025c52e63e3c726b4d81b01ed6cccad
SHA256: e966559e991025639873567d903337610a4b87f7f0b95113f8ed80f160ffe731 - 發行時間:2025年9月23日
- 與前一版的差異:
- 新增實作繁星資料的轉換能力。
- 程式會偵測輸入 HTML 資料的類型,若資料為學測或繁星資料的話才會進行對應的轉換。
- 檔案雜湊值:
- 0.1.1 版
- 檔案雜湊值:
MD5: 8f46c0a35b03bb7f6a827bf102edf0af
SHA256: c62297cc7736c47501c7bc25e9f74341d9fc3d57ed7c7c755855fb90743654cc - 發行時間:2025年9月11日
- 與前一版的差異:
- 再度擴充 data URI 圖片轉換對應文字的對照表規模,涵蓋更多先前未包含在內的 data URI 圖片。
- 檔案雜湊值:
- 0.1.0 版
- 檔案雜湊值:
MD5: 0b7b375a97c28573895d4e4ebca7b851
SHA256: 360e9d124d25ba805ab84b223a0519e0c882039b1ad3f41171c654dc4e1731fc - 發行時間:2025年8月11日
- 與前一版的差異:
- 加入將被去識別化的姓名、應試號碼等圖片內嵌入轉換後的 Excel 工作表的能力。
- 檔案雜湊值:
- 0.0.2 版
- 檔案雜湊值:
MD5: 36bb509f6338cc20973c88978410c071
SHA256: 7622555e689f0fc71659cd64850ffc26c4d0cb2ba9a917e93f1e653c61befa1a - 發行時間:2025年8月7日
- 與前一版的差異:
- 首度公開發行。
- 實作學測個人申請資料的轉換功能。
- 擴充 data URI 圖片轉換對應文字的對照表規模,以涵蓋更多先前未包含在內的 data URI 圖片。
- 檔案雜湊值:
Colab 記事本
由於「www.com.tw 資料轉換匯出程式」是個命令列工具程式,根據經驗來看,命令列操作對許多人來說會非常不適應,因此就借用了 Google Colab 系統,寫了個簡單的使用範例記事本,一方面透過記事本「www.com.tw 資料轉換程式使用範例.ipynb」來簡單展示 Node.js 環境準備、程式壓縮檔下載、程式使用方式等步驟,並且提供一個簡易的類圖形界面,讓使用者也可以透過執行該記事本來上傳 www.com.tw 目標頁面的 HTML 原始碼檔案,然後透過程式轉換成 XLSX 檔案後再下載回來。記事本的連結如下:
另外本程式在 0.3.0 版以後已經將「學測個人申請競爭校系對戰分析」的功能併入,以下記事本則是使用該功能的簡單步驟展示及簡易類圖形界面:
單純要開啟記事本的話,只要點擊以上連結即可,但如果要執行該記事本,則必須要登入 Google 帳號以便能連線到 Google 提供的執行階段 (runtime) 的虛擬機器。
其他輔助資訊