zoukankan      html  css  js  c++  java
  • 获取指定网址下的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());
            }

    ~做事情贵在坚持~
  • 相关阅读:
    SqlServer相关文章
    C#字典(Dictionary)相关文章记录
    Mysql相关文章
    Rabbitmq相关文章
    C#多线程之锁相关文章
    23种设计模式相关文章
    IdentityServer4之Consent与offline_access
    .netCore mvc 在javascript中读取属性中文乱码的问题
    基于 NET5的QQ扫码登录的第三方实现(无需注册开发者)
    Windows 操作系统开启长路径支持
  • 原文地址:https://www.cnblogs.com/csMapx/p/2207276.html
Copyright © 2011-2022 走看看