zoukankan      html  css  js  c++  java
  • 批量下载图片

    1. 效果图

    2. 主要代码:

    private async void button_Click(object sender, RoutedEventArgs e)
            {
                var htmlContent = await FileDownLoader.Instance.GetAsync(webUrl.Text);
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(htmlContent);
                label1.Content = "";
                var nodeCollection=  doc.DocumentNode.SelectNodes("//img");
                if(nodeCollection!=null)
                {
                    string imgDirectory = System.IO.Path.Combine(Environment.CurrentDirectory, "Imgs");
                    if(!Directory.Exists(imgDirectory))
                    {
                        Directory.CreateDirectory(imgDirectory);
                    }
                    progressBar.Maximum = nodeCollection.Count;
                    progressBar.Value = 0;
                    int errorCount = 0;
                    foreach (var item in nodeCollection)
                    {
                        progressBar.Value += 1;
                        try
                        {
                            var imgSrc=item.GetAttributeValue("src", null);
                            MyImg img = new MyImg(imgSrc);
                            if(!string.IsNullOrEmpty(img.FileName))
                            {
                              await  FileDownLoader.Instance.DownLoadImg(img, imgDirectory);
                            }     
                        }
                        catch (Exception ex)
                        {
                            errorCount += 1;
                        }
                        label1.Content = "第"+progressBar.Value+"个图片,共"+ progressBar.Maximum+"个图片,"+errorCount+"个错误";
                    }
                    progressBar.Value = progressBar.Maximum;
    
                }
    

      

      public  class FileDownLoader
        {
            HttpClient httpClient = new HttpClient();
            public static FileDownLoader Instance = new FileDownLoader();
            public async Task DownLoadImg(MyImg img,string imgDirectory)
            {
                var imgData = await httpClient.GetByteArrayAsync(img.ImgSrc);
                string newfilename = System.IO.Path.Combine(imgDirectory, img.FileName);
                using (var stream = File.Open(newfilename, FileMode.Create))
                {
                    await stream.WriteAsync(imgData, 0, imgData.Length);
                };
            }
            public async Task<string> GetAsync(string url)
            {
             var response= await  httpClient.GetAsync(url);
                return await response.Content.ReadAsStringAsync();
            }
        }
    

     

        public class MyImg
        {
            public MyImg(string imgSrc)
            {
                if (imgSrc != null)
                {
                    var startIndex = imgSrc.LastIndexOf(@"/");
                    var startIndex1 = imgSrc.LastIndexOf(".");
                    FileName = imgSrc.Substring(startIndex + 1, startIndex1 - startIndex + 3);
                    ImgSrc = imgSrc;
                }
            }
            public string FileName { get; set; }
    
            public string ImgSrc { get; set; }
        }
    

      

  • 相关阅读:
    nowcoderD Xieldy And His Password
    Codeforces681D Gifts by the List
    nowcoder80D applese的生日
    Codeforces961E Tufurama
    Codeforces957 Mahmoud and Ehab and yet another xor task
    nowcoder82E 无向图中的最短距离
    nowcoder82B 区间的连续段
    Codeforces903E Swapping Characters
    Codeforces614C Peter and Snow Blower
    Codeforces614D Skills
  • 原文地址:https://www.cnblogs.com/LittleFeiHu/p/4823456.html
Copyright © 2011-2022 走看看