2026年4月23日 星期四

Python 學習筆記 : 市圖借書與預約爬蟲程式架構

這兩天完成市圖爬蟲改版 (v13), 由於此爬蟲機制較複雜, 由地端與雲端程式共同運作來維護佈署於 Render 的 Serverless 平台上的資料庫 (kmsl_books 資料表), 這與 v10 版之前的系統完全由地端爬蟲程式一手包辦爬取與傳訊完全不同. 爬蟲任務主要由放在高雄家的樹莓派主機負責, 目前主要是市圖借書與預約狀況與母校圖書館自動續借兩個任務而已, 今天抽空畫了一張架構圖以資備忘. 

Pi 3B 對接 render.com 上的 5e6i 這個端點 : 




Pi 3A+  則對接 render.com 上的 fdof 這個端點 :




佈署於樹莓派上的市圖爬蟲程式 ksml_lib_13.py 負責每小時爬取網頁擷取借書與預約狀態後, 呼叫佈署於 render.com 的 serverless 平台函式 update_ksml_books.py, 將資訊儲存在 kmsl_books 資料表裡, 結果如下 :




另外一支本地程式 get_books_messages.py 透過 crontab 驅動定時呼叫 serverless 平台函式 send_books_messages.py 讀取 kmsl_books 資料表, 然後由發送到 Telegram, 參考最近三版異動 :


母校圖書館爬蟲 nkust_lib_11.py 的任務相對簡單, 只是登入網站後按全部續借鈕, 然後瀏覽借書頁面, 擷取已被預約的書目後用 Telegram 傳送通知訊息而已, 參考 :


至於 Pi 400 上佈署的爬蟲與 Pi 3B 的相同 (對接 5e6i), 但正常情況會關掉 crontab 內的 ksml_lib_13.py (不執行), 僅執行 get_books_messages.py 與 nkust_lib_11.py, 若 Pi 3 主機出問題再開啟 Pi 400 的市圖爬蟲. 

沒有留言 :