2012-11-28 107 views
1

我獲取網頁以將數據提供給我的應用程序。但是,這些頁面包含了許多我根本不需要的圖像。我只需要文本數據。 我的問題是,Web請求佔用了無法接受的時間。我認爲這些圖片也是在網絡請求期間獲取的。有什麼方法可以消除圖像並僅下載文本數據?忽略來自通過HttpWebRequest請求的網頁的圖像

以下是我目前使用的代碼。

 var httpWebRequest = HttpWebRequest.Create(url) as HttpWebRequest; 
     httpWebRequest.Method = "GET"; 
     httpWebRequest.ProtocolVersion = HttpVersion.Version11; 
     httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 
     httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
     httpWebRequest.Proxy = null; 
     httpWebRequest.KeepAlive = true; 
     httpWebRequest.Accept = "text/html"; 

     string responseString = null; 
     var httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse; 

     using (var responseStream = httpWebResponse.GetResponseStream()) 
     { 
      using (var streamReader = new StreamReader(responseStream)) 
      { 
       responseString = streamReader.ReadToEnd(); 
      } 
     } 

此外,任何其他優化建議是最受歡迎的。

+0

'有沒有什麼方法可以消除圖像並只下載文本數據?'您已經下載了純粹的html而不是圖像。 –

+0

@ L.B - 好的。那麼是否沒有進一步優化的空間? –

+0

優化速度,代碼?例如,如果您使用了'WebClient',則可以將代碼寫入兩行。 (當然WebClient在功能上是HttpWebRequest的子集) –

回答

5

這是不正確的。
HttpWebRequest不知道任何關於HTML或圖像;它只是發送原始的HTTP請求。

您可以使用Fiddler來查看究竟發生了什麼。

+0

你的意思是說,無論我做什麼,圖像都會被取走?我的意思是我的代碼可能是錯誤的,但有什麼辦法只提取文本,而不是獲取圖像? –

+0

+1。 @MrBhoot,只有HTML會被抓取。但它可能包含以「data:」協議內聯的圖像,或者出於任何其他原因,HTML可能較慢/較大。 –

+0

@AlexeiLevenkov - 我明白了。看來我必須啓動提琴手來檢查提取的數據。不管怎麼說,多謝拉。 –