2014-12-04 3 views
2

임 오프라인으로 볼 수 있도록 웹 페이지를 저장하려고합니다. 나는 웹 페이지에서 HTML을 얻을 menaged지만 모든 이미지를 얻는 방법을 알아낼 수 없습니다.웹 페이지에서 모든 이미지를 다운로드하려면 C#

  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의 웹 브라우저 컨트롤이 힘든 일을하도록 할 수 있습니다 : 여기

내가 HTML을 얻을하는 데 사용하는 코드입니다. 웹 페이지를 구문 분석 한 후에는 이미지 요소를 탐색하여 각 이미지를 저장할 수 있습니다.

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

감사합니다. 이것은 내가 excactly 무엇이 필요합니다. – number27

관련 문제