首页 新闻 会员 周边 捐助

读取图片地址

0
[已解决问题] 解决于 2012-11-05 14:05
原文是一个网站的源文件。里面有
img src=“图片地址"   src="其他地址"等。我要得到的是图片地址
未页的主页 未页 | 菜鸟二级 | 园豆:226
提问于:2012-11-05 11:46
< >
分享
最佳答案
0
private void DownLoadPic2()        {            WebRequest request = WebRequest.Create("http://gz.o.cn/youhui/mdl");            request.Credentials = CredentialCache.DefaultCredentials;            HttpWebResponse response = (HttpWebResponse)request.GetResponse();            Stream dataStream = response.GetResponseStream();            StreamReader reader = new StreamReader(dataStream, Encoding.Default);            string bigString = reader.ReadToEnd();            reader.Close();            dataStream.Close();            response.Close();            ArrayList imgUrl = new ArrayList();            foreach (Match match in Regex.Matches(bigString, "original=\".*\" alt"))            {                imgUrl.Add(match.Value.Substring(10, match.Value.Length - 15));            }            //删除重复数据            for (int i = 0; i < imgUrl.Count; i++)            {                for (int j = i + 1; j < imgUrl.Count; j++)                {                    if (imgUrl[i].Equals(imgUrl[j]))                    {                        imgUrl.RemoveAt(j);                        if (i > 0)                        {                            i--;                        }                    }                }            }            for (int i = 0; i < imgUrl.Count; i++)            {                var uri = WebRequest.Create(imgUrl[i].ToString());                var res = uri.GetResponse();                string filename = Application.StartupPath + "\\Images\\" + i + ".jpg";                Bitmap aa = new Bitmap(res.GetResponseStream());                aa.Save(filename);            }        }
未页 | 菜鸟二级 |园豆:226 | 2012-11-05 14:04
其他回答(2)
1
        public static StringBuilder GetImgUrl(string text)
        {
            StringBuilder str = new StringBuilder();
            string pat = @"<img\s+[^>]*\s*src\s*=\s*([']?)(?<url>\S+)'?[^>]*>";

            Regex r = new Regex(pat, RegexOptions.Compiled);

            Match m = r.Match(text);
            //int matchCount = 0;
            if (m.Success)
            {
                Group g = m.Groups[2];
                str.Append(g);
                m = m.NextMatch();
            }

           ......

        }

省略号代表一些个性化的处理  比如截取出来多了 /或者多了.什么的   你可以使用字符串的replace等方法给干掉

实际开发中远比楼主你这个要复杂,我这个是爬电商的图片正则,如果下载的源文件之有一个img 一个src 那么就简单许多了,楼主自己多试试吧。

oppoic | 园豆:770 (小虾三级) | 2012-11-05 11:58
0

不知道楼主是怎么取操作这个的,webrequest读取的,还是js端的操作 ?

 

http://htmlagilitypack.codeplex.com/

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-05 13:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册