一、實際需求
EMS郵件的自動分揀,要分揀首先須要獲取郵件的面單號和郵寄地址,如今咱們的快遞通常都有紙質面單的,若是是直接使用圖像識別技術從紙質面單中獲取信息,這個開發的成本和實時性都很難保證,獲取信息以後還要分別處理,出口件要分到全國的對應地區,進口件要分到所在地區的各個小區。因此要提早獲取面單號和郵寄地址兩個關鍵信息,處理完以後,直接把面單號和地址信息傳給分揀設備。
二、客觀狀況
郵政系統有本身的內網,辦公系統,有查詢的頁面,暫時沒有提供相關的接口開發,看來只能經過爬蟲的相關技術獲取這些關鍵信息了。
三、CefSharp(WPF)
比較瞭解C#,此次準備用WPF來開發,以前用CefSharp作過一些混合開發,Html來作頁面,後臺用C#,能夠訪問一些本地資源,以爲這種組合比較適合我。看到這個需求,首先就是想到了用CefSharp來訪問他們的內網系統,而後寫JS來自動實現瀏覽頁面,嵌入自定義的 funciton,訪問後臺的C#代碼,保存須要的信息。
四、具體實現
使用 CefSharp 的Browser.RegisterJsObject 註冊自定義的 funciton ,這個一步是整個爬蟲的重中之重,這樣以後,就至關於能夠控制瀏覽器的訪問邏輯了,能夠按照咱們本身的設計流程來運行,這裏面究竟是如何運用和能發揮的能量,只取決於你的想象力。
1)註冊自定義 function
2) 能夠在 JS中訪問的後臺C#代碼
3)JS中調用自定義funciton
五、總結
整個過程當中的關鍵環節是要讓爬取的那個頁面能訪問到後臺C#代碼,CefSharp在爬蟲中就至關於航空母艦級別的存在,是一個重量級的武器,能夠不用本身寫正則獲取數據,它已經幫你解析好了,只用寫JS腳本就能夠了。