Загрузить все изображения с веб-страницы с помощью С#

Я пытаюсь сохранить веб-страницу, поэтому я могу просматривать ее в автономном режиме. мне удалось получить html с веб-страницы, но я не могу понять, как получить все изображения.

вот код, который я использую для получения html:

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

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

Вы можете позволить управлению 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));
 }
}

licensed under cc by-sa 3.0 with attribution.