瀏覽器自動化的一些體會


這應該也是一個系列,邊整理,邊記錄。

 

瀏覽器自動化(browser automation) 我的理解就是用代碼模擬瀏覽器的行為。

這里說的基本上是基於C#的實現。

大致可能有這幾種方法(這里只是一個概述,詳細以后討論):

1.用httprequest,或者用webclient,后者相當於包裝了httprequest。

好處是簡單,比如用webclient簡單地下載一個網頁。另外,無需界面,這對於某些有必要隱藏界面的應用是有用的。

缺點主要是無法執行javascript,處理有cookie的網頁較麻煩等

2.用webBrowser控件。這是.net自帶的,但如果需要某些加強的功能時,比如要支持代理服務器切換,不加載圖片等,需要定制一下webBrowser。

優點一是不要去考慮session,cookie什么的,二是可以執行javascript

缺點一是不支持https,二是只能用ie瀏覽器,三是Document_Completed是異步的,有時候不太方便

3.用selenium的web driver。

優點一是和上面一樣,不用去考慮session,cookie什么的,二是可以方便地保留狀態,比如某些網站,只需登陸時選中一直在線,下次啟動應用訪問同一個網站時,不用重新登陸,三是可以執行javascript,四是支持https,五是支持多個瀏覽器,六是Navigate是阻塞的,很多情況下比較方便,七是某些操作如保存網頁中圖片等比webBrowser方便。總之感覺總體上功能比上面的webBrowser控件強大許多。

缺點一是感覺有些版本和firefox配合不好,二是FindElement找不到就出exception,也許因為selenium本意是用於測試的,這樣做有點道理,但動不動出exception,對於開發來說很頭大,我一般用PageSource.Contain來代替FindElement

4.用curl/wget/aria2等工具

這些都是命令行工具,.net里調用不是太方便,但也不失為一種方法。

5.用某些windows api,如URLDownloadToFile等。上面說的“定制”webBrowser控件,也需要用到很多windows api。

另外,也許嚴格地來說不能叫瀏覽器自動化,但我覺得也有點聯系,就是瀏覽器插件,不妨也提一提。ie用BHO,尚未動手做過,不好多說。看網上的資料說微軟似乎是不鼓勵這種做法的。firefox以前開發了一套插件系統,所謂的xul,功能很強大,但現在說要拋棄了,和chrome一樣用什么web extension,用了下,感覺很不爽,具體以后再說。

總之,這里只簡單地分個類,詳細都以后再說。也許我孤陋寡聞,似乎網上還少有這樣比較詳細的分類總結。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM