2013-05-27 209 views
1

我使用這個代碼:HttpWebRequest.GetResponse()等到完全加載頁面

HttpWebResponse objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse(); 
return new StreamReader(objHttpWebResponse.GetResponseStream()).ReadToEnd(); 

我得到的頁面內容成功,但我的問題是,有由JavaScript函數對人口的動態內容頁面,看來,內容是取前這些功能執行完畢,所以頁面的那些部分返回未填充數據,有沒有什麼辦法來解決這個「等待頁面,直到它完全加載在內的所有內容」。

編輯:

關於「@ElDog」的答案,我想下面的代碼,但沒有運氣:

 WebBrowser objWebBrowser = new WebBrowser(); 
     objWebBrowser.DocumentCompleted += objWebBrowser_DocumentCompleted; 
     objWebBrowser.Navigate(url); 

,並在文件完整的事件中,我執行以下代碼:

string content = ((WebBrowser)(sender)).Document.Body.InnerHtml; 

但還是JavaScript函數沒有執行。

+0

我建議您參考以下鏈接[參考鏈接1](http://stackoverflow.com/questions/3799242/asynchronous-webrequests-using-c-sharp)[參考鏈接2](HTTP:// msdn.microsoft.com/en-IN/library/system.net.webrequest.getresponse(v=vs.71).aspx)[參考鏈接3](http://stackoverflow.com/questions/10565090/getting-the - 響應-的-A-異步HttpWebRequest的) – RajeshKdev

+0

RJK,你的例子說明如何異步運行的HTTP請求,但是他們不會解決PB。異步與否,HttpWebRequest不會運行Java腳本。 – ElDog

回答

1

的HttpWebRequest不會在所有執行Java腳本。它只是給你一個網頁瀏覽器得到的迴應。要執行Java腳本,您需要在代碼中使用Web瀏覽器模擬。

+0

我使用的WinForms,你的意思是給我的網址瀏覽器控制,讓它完成加載,然後獲取頁面內容或有任何其他方式? – ykh

+0

自動化Web瀏覽器控制並從中解析出結果可能是一個解決方案,儘管我從來沒有做過。前段時間,我做了服務器端網頁解析,我真的錯過了可以在頁面上運行java腳本和其他動態內容的「非UI」瀏覽器。 – ElDog

+0

沒有工作,請參閱更新。 – ykh

相關問題