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