日期:2014-05-17  浏览次数:21014 次

c#,请问怎么提取网页中图片元素带有的连接
本帖最后由 superchair 于 2013-01-15 19:11:18 编辑
C#
例如某个网站中
<a href="xxx"><img src="ooo"></a>
这样的混合的,其中XXX是点击图片进去的网址OOO是图片的地址,我想分别获取这两个。

如果单纯图片的我知道了
HtmlElementCollection elemColl1 = this.webBrowser1.Document.GetElementsByTagName("img");
ImgUrl = elem.GetAttribute("src");

但是混合起来就有点小问题了~~主要是如果吧HtmlElementCollection elemColl1 = this.webBrowser1.Document.GetElementsByTagName("img");换成
HtmlElementCollection elemColl1 = this.webBrowser1.Document.GetElementsByTagName("a");
貌似就取不到东西了!

------解决方案--------------------
用正则
 
using System.Text.RegularExpressions;

Regex regx = new Regex("src=\"([\\s\\S].*?)\"");
 MatchCollection mc = regx.Matches(this.webBrowser1.DocumentText);
 foreach (Match m in mc)
 {
     string strFile = m.ToString();  //图片路径
 }

------解决方案--------------------
string str = "<a href=\"xxx\"><img src=\"ooo\"></a>";
            var ary = Regex.Matches(str, @"(?is)<a[^>]*?href=[""']([^""'>]+)[^>]*><img[^>]*?src=[""']([^""']+)[^>]*").OfType<Match>().Select(t => new { href = t.Groups[1].Value, src = t.Groups[2].Value }).ToArray();