首页 > 学院 > 开发设计 > 正文

批量下载图片

2019-11-14 13:59:37
字体:
来源:转载
供稿:网友
  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; }    }

  

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表