使用 C# 从网页下载所有图像

本文关键字:图像 下载 网页 使用 | 更新日期: 2023-09-27 18:32:59

我试图保存一个网页,以便我可以离线查看它。 我试图从网页中获取 HTML,但我无法弄清楚如何获取所有图像。

这是我用来获取 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);

使用 C# 从网页下载所有图像

你可以让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));
    }
}