标签:


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; }
}
标签:
原文地址:http://www.cnblogs.com/LittleFeiHu/p/4823456.html