正规表达式识别图片地址 并下载

private void GetPic(string htmlCode,string OutPath)
        {
            string pattern = @"={1}[/w/W][^=]+?(.jpg|.bmp|.gif|.png|.jpeg)";

            //string pattern = @"http:[^=/s]*(.jpg|.bmp|.gif|.png|.jpeg)";
            RegexOptions options = RegexOptions.None;
            Regex regex = new Regex(pattern, options);
            MatchCollection matches = regex.Matches(htmlCode);
            string CountPic = matches.Count;//取得所有图片数
            foreach (Match match in matches)
            {
                string UrlPic = match.Value.Replace("=/"", "").Replace("='", ""); ;
               
                try
                {
                    ImgDownLoc.SaveImageFromWeb(UrlPic, OutPath, "");
                }
                catch (Exception e)
                {
                    ImgDownLoc.WriteToLog(DateTime.Now.ToString()+":"+ match.Value+" "+e.Message.ToString());
                }
            }
        }

下载图片

/// <summary>
            /// C#获取图片并保存到本地C#获取图片并保存到本地 imgUrl图片路径,path输出路径,fileName文件名
            /// </summary>
            /// <param name="imgUrl">图片路径</param>
            /// <param name="path">输出路径</param>
            /// <param name="fileName">文件名 如果为空,取原名</param>
            /// <returns></returns>
            public static int SaveImageFromWeb(string imgUrl, string path, string fileName)
            {
                if (path.Equals("//"))
                    throw new Exception("未指定保存文件的路径");

                string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);

                string u = imgUrl.Substring(imgUrl.ToString().LastIndexOf("com/") + 4);

                string pa = u.Substring(0, u.LastIndexOf("/") + 1);
                path = path + "//" + pa;
                if (path.Contains(""))
                {
                    path = path.Replace("", "//");
                    path = path.Replace("/", "//");
                }
                try
                {
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                }
                catch (Exception e2)
                {
                    WriteToLog(DateTime.Now.ToString()+ " 未得到的图片路径:" + imgUrl + " :" + e2.ToString()+"/r/n");
                    return 0;

                }

                string defaultType = ".jpg";
                string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
                string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
                foreach (string it in imgTypes)
                {
                    if (imgType.ToLower().Equals(it))
                        break;
                    if (it.Equals(".bmp"))
                        imgType = defaultType;//
                }

                try
                {

                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
                    request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
                    request.Timeout = 40000;
                    WebResponse response = request.GetResponse();
                    Stream stream = response.GetResponseStream();

                    if (response.ContentType.ToLower().StartsWith("image/"))
                    {
                        byte[] arrayByte = new byte[1024];
                        int imgLong = (int)response.ContentLength;
                        int l = 0;

                        if (fileName == "")
                            fileName = imgName;

                        FileStream fso = new FileStream(path + fileName, FileMode.Create);
                        while (l < imgLong)
                        {
                            int i = stream.Read(arrayByte, 0, 1024);
                            fso.Write(arrayByte, 0, i);
                            l += i;
                        }

                        fso.Close();
                        stream.Close();
                        response.Close();

                        return 1;
                    }
                    else
                    {
                        return 0;
                    }
                }
                catch (Exception e1)
                {
 
                    WriteToLog(DateTime.Now.ToString() + " " + e1.ToString() + "/r/n");
                    return 0;
                }
               // return 1;

            }

            /// <summary>
            /// 错误信息保存到D:/ErrLog/Err_Log.txt
            /// </summary>
            /// <param name="message"></param>
            public static void WriteToLog(string message)
            {
                if (!Directory.Exists(@"D:/ErrLog"))
                {
                    Directory.CreateDirectory(@"D:/ErrLog");
                }
                try
                {
                    StreamWriter writer;
                    writer = File.AppendText(@"D:/ErrLog/Err_Log.txt");
                    writer.WriteLine(DateTime.Now.ToString() + " - " + message + "/n/n");
                    writer.Close();
                }
                catch
                {
                }
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值