下载网页中的图片到本地

 简单的一个下载如下 :

         string url = "http://avatar.csdn.net/A/2/6/2_yefengzhixia.jpg";string filepath = "D:\\pic.jpg";WebClient mywebclient = new WebClient();mywebclient.DownloadFile(url, filepath);MessageBox.Show("OK");    

 

下面演示一个从网站中下载所有图片到本地:

1、界面设计:

<Grid><DockPanel><GroupBox x:Name="groupBox" Header="图片网址" DockPanel.Dock="Top"><StackPanel><StackPanel Orientation="Horizontal" Margin="10" ><Button x:Name="button" Content="查看网页中的图片" Margin="5" Click="button_Click"  /><TextBlock Text="网址:"></TextBlock><TextBox x:Name="textBox" Text="http://www.tooopen.com/img/87.aspx" HorizontalAlignment="Left" MaxWidth="600" TextWrapping="Wrap" MinWidth="300"  VerticalAlignment="Top"  /></StackPanel><TextBlock Text="下载信息:"></TextBlock><TextBlock Margin="10" Name="txtcount" Text="{Binding downCount}"></TextBlock><TextBlock Name="total"></TextBlock><Button Click="Button_Click_1" Content="打开下载图片文件夹"></Button></StackPanel></GroupBox><ListBox Name="lb"></ListBox></DockPanel></Grid>

2、代码

 public partial class MainWindow : Window,INotifyPropertyChanged{public MainWindow(){InitializeComponent();this.DataContext = this;}private int c;public int downCount{get { return c; }set { c = value;if (PropertyChanged != null)PropertyChanged(this, new PropertyChangedEventArgs("downCount"));}}public ObservableCollection<string> list = new ObservableCollection<string>();public event PropertyChangedEventHandler PropertyChanged;private async void button_Click(object sender, RoutedEventArgs e){var path = textBox.Text;if (string.IsNullOrWhiteSpace(path)){textBox.Focus();MessageBox.Show("请输入网站地址");return;}HttpClient client = new HttpClient();var str = await client.GetStringAsync(new Uri(path));Regex rg = new Regex("<img.+?src=\"(.+?)\"");var mth = rg.Matches(str);WebClient wc = null;int i = 0;total.Text="共有图片:"+mth.Count;Action<string> listboxAddImgName = x => {lb.Items.Add(x);};foreach (Match item in mth){i++;var img = item.Groups[1].Value;string Ex = img.Substring(img.LastIndexOf("."));string imgName = i + Ex;Task.Run(() =>{wc = new WebClient();wc.DownloadFile(img, "DownLoadImages/" + imgName);return imgName;}).ContinueWith(r=> {downCount +=1;Dispatcher.Invoke(listboxAddImgName,r.Result);});}}private void Button_Click_1(object sender, RoutedEventArgs e){System.Diagnostics.Process.Start(Environment.CurrentDirectory+"/DownLoadImages");}}

 

另一个方法,使用线程不完整,以后再完善:

  HttpClient client = new HttpClient();var http = await client.GetStringAsync(txturl.Text.Trim());Regex rg = new Regex("<img.+?src=\"(.+?)\"");var ms = rg.Matches(http);List<Task> tasklist = new List<Task>();count = ms.Count;foreach (Match m in ms){if (m.Success){string imgurl = m.Groups[1].ToString();Task.Run(async () =>{var downImgurl = System.IO.Path.Combine(path, imgurl.Substring(imgurl.LastIndexOf(@"/") + 1));WebClient wc = new WebClient();wc.DownloadFile(imgurl, downImgurl);//byte[] buf = await client.GetByteArrayAsync(imgurl);//File.WriteAllBytes(downImgurl, buf);lock (obj){Dispatcher.Invoke(() =>{list.Add(new Img() { url = downImgurl });});num++;}});}}

 

转载于:https://www.cnblogs.com/lunawzh/p/5975271.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260294.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nacos linux启动_微服务系列之Nacos配置中心之一:Nacos介绍与安装

一、Nacos 介绍Nacos 是 Alibaba 公司推出的开源工具&#xff0c;用于实现分布式系统的服务发现与配置管理。英文全称 Dynamic Naming and Configuration Service&#xff0c;Na 为 Naming/NameServer 即注册中心&#xff0c;co 为 Configuration 即配置中心&#xff0c;Servic…

演练:在组件设计器中创建 Windows 服务应用程序

http://msdn.microsoft.com/zh-cn/library/zt39148a(vvs.80).aspx 演练&#xff1a;在组件设计器中创建 Windows 服务应用程序 .NET Framework 2.0其他版本5&#xff08;共 5&#xff09;对本文的评价是有帮助 - 评价此主题注意 Visual Studio 标准版中不提供“Windows 服务”模…

绝对震撼 7款HTML5动画应用及源码

除非特别声明&#xff0c;PHP100新闻均为原创或投稿报道&#xff0c;转载请注明作者及原文链接 原文地址&#xff1a; http://www.php100.com/html/it/mobile/2014/0702/7030.html [导读] 关于HTML5动画&#xff0c;我们已经分享太多了&#xff0c;当然也有很多利用纯CSS3实现的…

maven打包指定main函数

2019独角兽企业重金招聘Python工程师标准>>> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> …

java 任意数平均值_【编程题】通过键盘输入三个任意的数字,计算三个值的平均值,并输出结果。...

【单选题】对放大电路测试NPN型硅管测得Ube>0,Ubc>0,Uce>0【简答题】Even ordinary men understand now that the universe is something vaster and broader than ever thought before.【单选题】【其它】The Einsteins,however,could not afford to pay for the adv…

【转】Direct3D顶点结构使用总结

【转】Direct3D顶点结构使用总结 D3D里面最基本的就是顶点了&#xff0c;虽说一直在用&#xff0c;可是却也是自己比较模糊的一个点&#xff0c;知道其中的意思&#xff0c;却不是很清楚&#xff0c;今天就总结一下&#xff0c;扫一下这个盲区&#xff1a; D3D中的顶点缓冲区的…

quick cocos2d-x 精灵大小(宽高)获取

quick下sprite的大小获取&#xff0c;记录一下&#xff1a; local w sprite:getContentSize().width local h sprite:getContentSize().height 今天连这个最基本的&#xff0c;都不知道怎么获取。挺实用的代码额~转载于:https://www.cnblogs.com/vokie/p/3822248.html

velocityjs 动画库 比jquery默认的animate强

神坑记录&#xff1a; 1、transform: translate3d(80%,0,0); 无法作为参数&#xff0c;必须修改为这种&#xff1a;translateX: 0% 官方文档 http://velocityjs.org/ github地址 https://github.com/julianshapiro/velocity npm下载安装 npm install velocity-animate --save-d…

python中的可变数据类型有列表和元组_Python中列表的 += 和 .extend() 的异同

一道Python题最近有朋友“考”了我一个Python的题&#xff1a;使用和.extend()两种方法扩展元组中的列表会发生什么。虽然我对Python中的可变数据类型、不可变数据类型的概念都有较深的理解&#xff0c;并且也对list的、、.extend()、.append()做过性能分析&#xff0c;但是和.…

简易贪吃蛇小游戏java版_用GUI实现java版贪吃蛇小游戏

本文实例为大家分享了java版贪吃蛇小游戏的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下项目结构新建一个JFrame窗口,作为程序入口public class GameStart{public static void main(String[] args) {JFrame jFrame new JFrame();jFrame.setBounds(100,100,900,720…

几种代价函数

SAD&#xff08;Sum of Absolute Difference&#xff09;SAE&#xff08;Sum of Absolute Error)即绝对误差和 SATD&#xff08;Sum of Absolute Transformed Difference&#xff09;即hadamard变换后再绝对值求和 SSD&#xff08;Sum of Squared Difference&#xff09;SSE&am…

Markdown文件导出为HTML的小程序

Markdown文件导出为HTML的小程序为什么做 最近把一些学习经验记下来&#xff0c;总结成MarkDown文件&#xff0c;不知不觉已经有12篇了。 Sublime Text 的 MarkDown Preview 插件能够将MarkDown语法转换为HTML&#xff0c;并提供三种预览方式&#xff1a;浏览器预览、保存为HTM…

python制作自动回复脚本_python itchat实现微信自动回复的示例代码

今天在实验楼发现一个特别好玩的&#xff0c;Python 微信库itchat,可以实现自动回复等多种功能&#xff0c;好玩到根本停不下来啊&#xff0c;尤其是调戏调戏不懂计算机的&#xff0c;特别有成就感&#xff0c;哈哈&#xff01;&#xff01;代码如下&#xff1a;#codingutf8imp…

pta龟兔赛跑Java_PTA-龟兔赛跑

乌龟与兔子进行赛跑&#xff0c;跑场是一个矩型跑道&#xff0c;跑道边可以随地进行休息。乌龟每分钟可以前进3米&#xff0c;兔子每分钟前进9米&#xff1b;兔子嫌乌龟跑得慢&#xff0c;觉得肯定能跑赢乌龟&#xff0c;于是&#xff0c;每跑10分钟回头看一下乌龟&#xff0c;…

视频压缩算法的相关知识

视频压缩算法的相关知识MPEG-1MPEG 视频压缩编码后包括三种元素&#xff1a;I帧&#xff08;I-frames&#xff09;、P帧&#xff08;P-frames&#xff09;和B帧&#xff08;B-frames&#xff09;。在MPEG编码的过程中&#xff0c;部分视频帧序列压缩成为I帧&#xff1b;部分压缩…

安装MariaDB数据库(未完成)

1转载于:https://www.cnblogs.com/centos7/p/5994533.html

python接口开发django_用 Django 开发接口

环境搭建1、pip install django2.2.0一、django-admin startproject UITESTpython manage.py startapp paltform创建Django项目1. 创建方式&#xff1a;#方式1&#xff1a;终端输入django-admin startproject UITEST#方式2:pycharm中新建django项目在settings.py文件中添加应用…

戒掉dota

立言为证。 每次不想学习想到dota就强迫自己去培养的兴趣。 比如看一本喜欢的书&#xff1b;比如去跑个步&#xff1b;比如研究某个兴趣点写个报告&#xff1b;比如写份随笔。 转载于:https://www.cnblogs.com/hongxia/p/3830348.html

java切入式编程显示屏_C语言嵌入式系统编程修炼之四:屏幕操作

C语言嵌入式系统编程修炼之四:屏幕操作作者:宋宝华 更新日期:2005-07-22汉字处理现在要解决的问题是&#xff0c;嵌入式系统中经常要使用的并非是完整的汉字库&#xff0c;往往只是需要提供数量有限的汉字供必要的显示功能。例如&#xff0c;一个微波炉的LCD上没有必要提供显…

DIV的边距属性在Chrome和IE中的区别

突然间&#xff0c;在Chrome下看起来很整齐的布局&#xff0c;在IE下变成一团糟。为了找出原因&#xff0c;我改动了div的background-color属性。最后&#xff0c;发现同一个DIV的宽度在IE和Chrome下却不一样。这大晚上的&#xff0c;真是怪吓人滴&#xff01; 之后&#xff0c…