首页 > 其他分享 >通过Webbrowse获取页面的图片并下载

通过Webbrowse获取页面的图片并下载

时间:2022-09-22 13:58:36浏览次数:86  
标签:src sPath url Webbrowse 获取 2C 页面 下载 图片

代码参考连接:https://bbs.huaweicloud.com/blogs/307065#:~:text=C%23 网络编程之webBrowser获取网页url和下载网页中图片 1 一. 界面设计 界面设计如下图所示%2C添加控件如图%2C设置webBrowser1其Anchor属性为Top、Bottom、Left、Right%2C实现对话框缩放%3B设置groupBox1其Dock (定义要绑到容器控件的边框)为Buttom%2C实现当浏览器缩放时groupBox1始终在最下边%3B设置listBox其HorizontalScrollbar属性为True%2C显示水平滚动条. 2,三. 运行结果 运行结果如下图所示%3A点击"浏览"按钮可以实现浏览网页%2C点击"获取"可以获取网页的URL并显示在listBox控件中%2C最后点击"下载"把图片保存到E盘目录下%2C下面就是浏览百度时下载的logo图标. ... 4 五. 正则表达式

前提

因为最近使用了webbrowse爬取页面数据需要把页面的图片下载下来。

正文

显示通过webbrowse的Navigate()方法加载数据
webbrowse中有3种方式获取相关需要的特定数据。
获取的数据通过正则表达式进行匹配对应的img的src路径,进行相关的判断,然后下载下来,存放到指定路径。项目是代码的相关实现

MatchCollection matches;
List<string> imglist = new List<string>();//获取这个内容中所以的img的src标签
matches = Regex.Matches(item["PartContent2"].ToString(), @"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);
foreach (Match match in matches)
       {
          imglist.Add(match.Value.ToString());
       }
	 foreach(var img in imglist)
                {
                    string content = img;    //获取图片url
                    Regex reg = new Regex(@"<img.*?src=""(?<src>[^""]*)""[^>]*>", RegexOptions.IgnoreCase);
                    MatchCollection mc = reg.Matches(content);        //设定要查找的字符串
                    foreach (Match m in mc)
                    {
                        string url = m.Groups["src"].Value;
						//判断图片中有没有下载路径
                        if (!url.Contains("http"))
                        {
                            url = "http://当前页url" + m.Groups["src"].Value;
                        }
                        try
                        {
                            WebRequest request = WebRequest.Create(url);//图片src内容
                            WebResponse response = request.GetResponse();
                            //文件流获取图片操作
                            Stream reader = response.GetResponseStream();
                            string imgsrc = url.Split('/')[url.Split('/').Length - 1];//截取图片的最后一个字的名称
                            string sPath = "D://Pictuers/" ;//图片存储位置
                            if (!Directory.Exists(sPath))
                            {
                                Directory.CreateDirectory(sPath);
                            }
                            sPath += "/"+ imgsrc;        //图片路径命名 
                            FileStream writer = new FileStream(sPath, FileMode.OpenOrCreate, FileAccess.Write);
                            byte[] buff = new byte[512];
                            int c = 0;                                           //实际读取的字节数   
                            while ((c = reader.Read(buff, 0, buff.Length)) > 0)
                            {
                                writer.Write(buff, 0, c);
                            }
                            //释放资源
                            writer.Close();
                            writer.Dispose();
                            reader.Close();
                            reader.Dispose();
                            response.Close();
                        }

标签:src,sPath,url,Webbrowse,获取,2C,页面,下载,图片
From: https://www.cnblogs.com/stupidparsley/p/16715781.html

相关文章