2014-03-04 75 views
-1

我想從特定URL獲取內容。 我試過這段代碼:通過網絡瀏覽器元素獲取文檔內容

var request = (HttpWebRequest)WebRequest.Create("https://example.com"); 
request.Timeout = 5000; 
request.Method = "GET"; 
request.ContentType = "text/xml"; 

using (var _webResponse = (HttpWebResponse)_request.GetResponse()) 
{ 
    var webResponseStatus = _webResponse.StatusCode; 
    var stream = _webResponse.GetResponseStream(); 

    using (var _streamReader = new StreamReader(_stream)) 
    { 
     string plainText = _streamReader.ReadToEnd(); 
    } 
} 

的問題是,內容是不相關的,好像它返回的垃圾塊。 例如,這是我收到的內容的開頭:

<!doctype html><html itemscope=\"\" 
itemtype=\"http://schema.org/WebPage\" dir=\"rtl\"><head><meta 
itemprop=\"image\" 
content=\"/images/google_favicon_128.png\"><title>Google</title><script>(function(){\nwindow.google={kEI:\"JVMWU4OxMuL9ygOem4GACw\",getEI:function(a){for(var 
b;a&&(!a.getAttribute||!(b=a.getAttribute(\"eid\")));)a=a.parentNode;return 
b||google.kEI},https:function(){return\"https:\"==window.location.protocol},kEXPI:\"17259,4000116,4007661,4007830,4008067,4008133,4008142,4009033,4009565,4009641,4010297,4010806,4010830,4010858,4010899,4011228,4011258,4011679,4,4,40125 

我想這顯示在網頁上的文字。 我該怎麼做? 我會很感激任何幫助。 謝謝, Avi。

回答

2

這不是垃圾。返回的文本是一堆Javascript。當頁面被加載到瀏覽器中時,瀏覽器執行Javascript,它下載一些數據並修改DOM。

如果您想要呈現的HTML,那麼您可以創建一個WebBrowser組件來顯示頁面,然後通過該組件訪問DOM,或者可以將JavaScript引擎添加到C#程序並讓它解釋網頁。有關如何做到這一點的信息,請參閱Embedding JavaScript engine into .NET

+0

什麼是最簡單有效的方法呢? 直接獲取HTML代碼是不可能的? 謝謝。 – user3381113

+0

我知道是什麼問題。 問題是Facebook不支持C#中的Web瀏覽器元素,這就是爲什麼我無法從Facebook頁面獲取conent。 從另一個網頁,如谷歌我可以獲取任何我想要的文字。 看來,我不需要任何JS來HTML轉換,但找到一種方法來專門從Facebook獲取內容。 再次感謝你, Avi。 – user3381113

+0

您通過調用Facebook API從Facebook獲取內容。見https://developers.facebook.com/docs/reference/apis/ –