2014-12-04 43 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