這是一個很早就設想的項目,一直沒有付諸實現。前幾天從網上接了一個小項目,和 網頁數據提取有些關系,就順便開發了這方面的功能。
項目有幾個步驟,從簡單到復雜一步步實現。現從簡單的開始吧。
說簡單,就簡單。不考慮模式問題,不考慮性能問題,不考慮多線程問題,采用傳統的編程方式,想到功能就加上去,優化的問題以後考慮吧,當然要冒著整個項目被推翻的風險。
功能列表:
1。讀取網頁: 必須實現的功能,否則就沒有操作的基礎數據。網頁數據類型包括:Html, XML, asp, ASPx, image, script等。讀取方法很多種,比如WebBrowser控件,WinSock控件等。
2。網頁數據解析:對上一步讀取的數據再加工和檢索,找到需要數據。這一步操作挺麻煩的,因為我們面對的數據結構五法八門。可以使用WebBrowser的Document訪問節點;也可以使用mshtml中的HtmlDocumentClass類;直接讀取數據,采用文本分析方法也行,效率低一些,如果用正則表達式,效率會提升不少。上面的數據分析方法我都用過,根據處理的數據類型決定。
上面兩步是初級部分,實用功能建立在上述結果的基礎上。
3。添加實用功能:
1) 網頁中link, button點擊:模擬用戶的操作,點擊網頁中的鏈接。在WebBroswer或msHtml中很容易實現點擊動作。注意要實現相關事件回調,比如Completed,Navigating等。
WebBrowser --> Document --> DomDocument --> Html Element --> Click
要找到相應的控件可以使用name, class id, href,submit等屬性在控件集中過濾。
2)網頁中數據填充: 數據填充一般發生在textbox控件,通過name能定位到控件,把待填充值賦給其value屬性。
3)驗證碼識別:這一個牽涉到很多知識的話題,我會在另一篇文章中論述之, 在這裡我們舉個簡單的例子,如,復雜一點的如, (聲明:驗證碼圖片是從網上提取的,網站名不記得了,如發現侵權,請立即聯系[email protected]或QQ:624286399,立即刪除圖片)。
4)網絡問題:有很多朋友喜歡使用代理服務器上網,代理服務器功能必不可少。使用靜態地址的朋友可以考慮IP地址不斷變化,動態IP地址功能也加進來吧,也不怎麼難實現。兩者功能實現技術可以使用Sock, DCHP, WMI等,我用的是WMI.
5)網頁過濾:網頁過濾主要是處理IE和網頁中script彈出的對話框。挺煩的,用戶交互模式使用IE還行,在工具中不能人工干預,不能打斷工具運行,一定要去掉。這是個技術難點,好在我已經解決了這個問題。關鍵是要解決UI Handler的問題。
$False$
在實際開發中還用到了其他的技術,今天先說到這裡,以後詳談。
如果需要開發類似軟件可以聯系[email protected], QQ:624286399,MSN: [email protected].