2014-12-04 33 views
2

我試圖保存一個網頁,所以我可以離線查看它。我試圖從網頁獲取html,但我無法弄清楚如何獲取所有圖像。使用c下載網頁中的所有圖像#

這裏是我使用來獲取HTML代碼:

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(txtUrl.Text); 
      HttpWebResponse responce = (HttpWebResponse)request.GetResponse(); 
      StreamReader sr = new StreamReader(responce.GetResponseStream()); 
      string responsehtml = sr.ReadToEnd(); 
      sr.Close(); 

      string path = @"C:\Users\Cargoguide\Pictures\test\test.htm"; 
      File.WriteAllText(path, responsehtml); 
      Process.Start(path); 

回答

2

你可以讓的winform的WebBrowser控件完成複雜的工作。分析網頁後,您可以瀏覽圖片元素以保存每張圖片。

private void GetWebpage(string url) 
{ 
    WebBrowser browser = new WebBrowser(); 
    browser.Navigate(url); 
    browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted); 

} 

void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    var browser = (WebBrowser)sender; 
    var client = new WebClient(); 
    foreach (var img in browser.Document.Images) 
    { 
     var image = img as HtmlElement; 
     var src = image.GetAttribute("src").TrimEnd('/'); 
     if (!Uri.IsWellFormedUriString(src, UriKind.Absolute)) 
     { 
      src = string.Concat(browser.Document.Url.AbsoluteUri, "/", src); 
     } 

     //Append any path to filename as needed 
     var filename = new string(src.Skip(src.LastIndexOf('/')+1).ToArray()); 
     File.WriteAllBytes(filename, client.DownloadData(src)); 
    } 
} 
+0

謝謝。這是我需要的東西。 – number27 2014-12-04 09:36:59