获取指定网址下的html页面中的图片文件

        // 获取指定网址下的html页面中的图片文件路径列表
        private static List<string> getImageUrlList(string strSource)
        {
            Regex reg = new Regex(@"http://\S+\.(gif|bmp|png|jpg)");
            MatchCollection mc = reg.Matches(strSource);

            List<string> strList = new List<string>();

            for (int i = 0; i < mc.Count; i++)
            {
                strList.Add(String.Format("{0}\r\n", mc[i].Value));
            }
            List<string> newList = new List<string>();
            newList.AddRange(strList.Distinct());
            return newList;
        }

        // 获取指定url路径的图片,保存下来
        private static void getUrlImage(string imageUrl)
        {
            try
            {
                int lastIndex = imageUrl.LastIndexOf('/');
                string fileName = imageUrl.Substring(lastIndex + 1); // 文件名称

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imageUrl);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream receiveStream = response.GetResponseStream(); // 网络stream, 不可获取长度
               
                BinaryReader reader = new BinaryReader(receiveStream);
                string imagePath = @".\img\";
                if (!Directory.Exists(imagePath))
                    Directory.CreateDirectory(imagePath);
                using (FileStream stream = new FileStream( imagePath + fileName, FileMode.Create))
                {
                    byte[] buffer = new byte[256]; // 通过缓存取得数据
                    int count = reader.Read(buffer, 0, 256);
                    while (count > 0)
                    {
                        stream.Write(buffer, 0, count);
                        count = reader.Read(buffer, 0, 256);
                    }
                    stream.Flush();
                }
                receiveStream.Close();
            }
            catch { }

        }

        // 调用示例
        private void captureImageByUrl(string urlStr)
        {
            string strSource = getUrlHtml(urlStr);

            if (strSource == String.Empty) return;

            List<string> strList = getImageUrlList(strSource);

            StringBuilder sb = new StringBuilder();       
            foreach (string item in strList)
            {
                sb.Append(item);
                getUrlImage(item.TrimEnd(new char[] { '\r', '\n' }));
            }
            MessageBox.Show(sb.ToString());
        }

posted @ 2011-10-11 14:15  沧海小小粟  阅读(2398)  评论(0编辑  收藏  举报