跨系統網頁自動化填寫做法
背景
上級單位需要管考目前管理處執行中的工程案件,建立農田水利設施工程管考系統(以下稱外部系統)供各管理處進行填報,然而管理處於前期便已建立工程管考E化系統(以下稱內部系統)做為內部資料的收集,監造單位需要在內部系統先進行填寫後,再由管理單位進入外部系統將內部系統資料再重新謄打一次。
為進行外部系統資料填報,最理想的狀況當然是能透過內部系統自身觸發器(Trigger)執行外部系統API發送,內部系統資料庫異動時也能一併修改到外部系統的內容。
然而今日沒有外部系統API使用,需要另外想辦法從原本的資料庫撈取資料進行網頁自動化填報才能省事,首先要確認內部系統的資料庫欄位是否能進行資料梳理,再者確認網頁自動化填報做法為何。
外部系統操作畫面
內部系統資料庫
經查外部系統相關資料欄位分散於內部系統資料庫(SQLserver)各個不同資料表,雖然透過JOIN的方式也可以產出一個滿接近可以直接輸入的成果,但筆者對於資料庫的操作經驗尚顯不足,期程迫在眉睫,只好先將內部系統相關各表先匯出成excel,再透過熟悉的VBA進行資料梳理,整理成未來網頁自動化填報待載入的內容。
為不影響既有資料庫運作,先請各同仁將欲填報資料內容填寫完後進行資料庫備份,於本地端重啟一個資料庫服務並導入備份內容進行後續操作。
資料梳理細節
外部系統頁面 | 欄位名稱 | 內部系統資料表 |
---|---|---|
工程研提 | 工程編號(自訂) | APMFORM |
工程名稱 | ||
鄉鎮市 | ||
水路名稱列表(自訂) | ||
分項工程 | 水路名稱 | MONFORM |
工程概要表 | 受益面積 | |
改善類別 | ||
改善效益 | ||
用地情形 | ||
規劃情形 | ||
相關情形 | ||
農民意願 | ||
水源情形 | ||
水權情形 | ||
是否需配合斷水期施工 | ||
工程重要性 | ||
經費概估項目 | MONFUND | |
現況照片及設計簡圖 | MONFPIC |
照片處理
在處理照片對映時,發現資料庫中的照片存成二進位,需先把二進位轉成圖片才有辦法進行後續處理。
1 | def get_photos(): |
網頁自動化填報
原本想像中的Selenium會需要從無到有開啟一個網站後開始進行資料填寫,大多數的網站都會有帳號密碼驗證機制,甚至祭出驗證碼、選擇汽車圖片、移動滑鼠到指定位置...等反爬蟲機制來確認是否為機器人,但若網頁可以被接管繞開這些機制的話,那整個資料填報作業就會很有機會讓電腦代勞,這就是寫程式的趣味來源,當然還是要小心不能點太快,否則網站可能會負荷不過來。
Chrome
網頁瀏覽器,透過以下指令即可進行網站操作接管,需要根據自身電腦的chrome安裝路徑執行,建議將原本所開啟中的chrome畫面通通關閉後再執行以下指令。
- WIN10
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" –remote-debugging-port=9222
- WIN11
"C:\Program Files\Google\Chrome\Application\chrome.exe" –remote-debugging-port=9222
NOTE:如果仍然找不到瀏覽器的執行路徑,可以在原本桌面瀏覽器捷徑找尋內容