[C#] Download All Image From Link Website
	Dưới đây là giao diện demo ứng dụng tải tất cả hình ảnh từ website:
	- 
		Đầu tiên, các bạn chọn đường dẫn vào và bấm nút Get Images => trả về danh sách các đường dẫn hình ảnh từ link URL.
- 
		Tiếp đến các bạn bấm nút Download All để tải hình ảnh về ổ đĩa máy tính của bạn.
- 
		
			Full source code Download Image C#: 
			
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FetchAllImageFromWebsite
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        }
        private void btnGetImages_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            listImages.Items.Clear();
            foreach (string image in FetchImages(txtURL.Text))
            {
                listImages.Items.Add(image);
            }
            this.Cursor = Cursors.Default;
        }
        public List<string> FetchImages(string Url)
        {
            List<string> imageList = new List<string>();
         
            if (!Url.StartsWith("http://") && !Url.StartsWith("https://"))
                Url = "http://" + Url;
           
             var htmlDoc = new HtmlAgilityPack.HtmlWeb().Load(Url);
            var htmlData = htmlDoc.DocumentNode.OuterHtml;
            string imageHtmlCode = "<img";
            string imageSrcCode = @"src=""";
            int index = htmlData.IndexOf(imageHtmlCode);
            while (index != -1)
            {
                //Remove previous data
                htmlData = htmlData.Substring(index);
                //Find the location of the two quotes that mark the image's location
                int brackedEnd = htmlData.IndexOf('>'); //make sure data will be inside img tag
                int start = htmlData.IndexOf(imageSrcCode) + imageSrcCode.Length;
                int end = htmlData.IndexOf('"', start + 1);
                //Extract the line
                if (end > start && start < brackedEnd)
                {
                    string loc = htmlData.Substring(start, end - start);
                    //Store line
                    imageList.Add(loc);
                }
                //Move index to next image location
                if (imageHtmlCode.Length < htmlData.Length)
                    index = htmlData.IndexOf(imageHtmlCode, imageHtmlCode.Length);
                else
                    index = -1;
            }
            //Format the image URLs
            for (int i = 0; i < imageList.Count; i++)
            {
                string img = imageList[i];
                string baseUrl = GetBaseURL(Url);
                if ((!img.StartsWith("http://") && !img.StartsWith("https://"))
                    && baseUrl != string.Empty)
                    img = baseUrl + "/" + img.TrimStart('/');
                imageList[i] = img;
            }
            return imageList;
        }
        private string GetBaseURL(string Url)
        {
            int inx = Url.IndexOf("://") + "://".Length;
            int end = Url.IndexOf('/', inx);
            string baseUrl = string.Empty;
            if (end != -1)
                return Url.Substring(0, end);
            else
                return string.Empty;
        }
        private void listImages_SelectedValueChanged(object sender, EventArgs e)
        {
            string curItem = listImages.SelectedItem.ToString();
            picImage.LoadAsync(curItem);
        }
        private void btnDownload_Click(object sender, EventArgs e)
        {
            var firstname = "";
            foreach(var item in listImages.Items)
            {
                using (WebClient webClient = new WebClient())
                {
                    try
                    {
                        string fileName = Path.GetFileName(new UriBuilder(item.ToString()).Path);
                        webClient.DownloadFile(item.ToString(), "images\\" + fileName);
                        firstname = fileName;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                  
                }
            }
            ExploreFile(Application.StartupPath + $"\\images\\{firstname}");
        }
        public bool ExploreFile(string filePath)
        {
            if (!System.IO.File.Exists(filePath))
            {
                return false;
            }
            filePath = System.IO.Path.GetFullPath(filePath);
            System.Diagnostics.Process.Start("explorer.exe", string.Format("/select,\"{0}\"", filePath));
            return true;
        }
    }
}
 
	 
                        
                         
                        
                        Nguồn: Sharecode.vn