20120706

C# - 利用WebBrowser類別存取AJAX網頁

說明

以前我常常用WebBrowser來抓取網頁中的資料,或是利用IHTMLDocument2等方式,來控制網頁的動作。

 

後來我更利用HtmlAgilityPack來搭配WebBrowser,抓取資料可謂易如反掌。

 

但是等到AJAX大量流行之後,直接用WebBrowser抓取資料變得難上加難。因為WebBrowser.ReadyState即便成為了「Complete」,也不代表後面的Javascript已經把資料抓完了,所以往往是看得到、抓不到。

 

剛好最近比較閒,研究了一下解決方法。

 

 

解決方法

簡單來說,就是在WebBrowser讀取網頁之後,利用一個迴圈一直等候要抓取的資料出現,這有一個風險,要是對方的Javascript不是針對特定ID或是以亂數決定ID的時候,就要用很多種不同的方式,來迂迴檢查是否已讀入資料。

 

這一篇沒有範例,沒有程式碼,解決方式就是上面二句話,看得懂的人就看得懂囉。

 

因為全部寫出來太花時間,先記在這邊,免得自己以後忘記。