首页 新闻 搜索 专区 学院

求正则表达式取html元素

0
悬赏园豆:5 [已解决问题] 解决于 2012-08-05 13:28
<td class="f"><h3 class="t"><a onmousedown="return c({'fm':'as'})" href="http://photo.zol.com.cn/photo/15515263.html" target="_blank"><em>www</em>-<em>8kmm</em>-<em>com</em>-new (1)-中国美女-ZOL相册</a><span class="tsuf"><span style="position: relative; "><div class="fav_tip"></div></span></span> </h3> <font size="-1"> <em>www</em>-<em>8kmm</em>-<em>com</em>-new (1) 中国美女 返回该相册  浏览:7次 评论:0次 被推荐:0次 我要推荐插入表情  *ctrl+Enter快速回复 ...<br> <span class="g">  photo.zol.com.cn/photo/15515263.html 2012-7-20  </span> - <a href="#" target="_blank" class="m"> 百度快照</a><span class="liketip" id="like_4537213515679560947"></span><br> </font></td>

<td class="f"><h3 class="t"><a onmousedown="return c({'y':'BFBFF55B'})" href="http://v.pps.tv/ugc/tag-t1568980.html" target="_blank"><em>www</em>-<em>8kmm</em>-<em>com</em>视频 PPS 在线视频</a><span class="tsuf"><span style="position: relative; z-index: 1000; "><div class="fav_tip"></div></span></span> </h3> <font size="-1"> 查看包含“<em>www</em>-<em>8kmm</em>-<em>com</em>” 标签的视频,共2个视频标签:<em>www</em>-<em>8kmm</em>-<em>com</em>... Copyright   2005 - 2012 PPStream, Inc. All Rights Reserved...<br> <span class="g">  v.pps.tv/ugc/tag-t1568980.html 2012-7-25  </span> - <a href="#" target="_blank" class="m"> 百度快照</a><span class="liketip" id="like_7995101785469501244"></span><br> </font></td>

1.  需要获取a标签的链接地址、 文本内容;

2.  <font size="-1"> 里面的内容;

3.  获取 2012-7-20 这一个位置日期的值。

 

 

为什么我的:

 MatchCollection mctable = Regex.Matches(html, "<td class=\"f\">(.*)</td>",RegexOptions.Multiline|RegexOptions.IgnoreCase)

取不到内容。

问天何必的主页 问天何必 | 老鸟四级 | 园豆:3311
提问于:2012-07-31 08:41
< >
分享
最佳答案
0

(?i)(?s)<td class="f">.*?<a\s+.*?href="(?<href>.*?)"\s+target="_blank">(?<atext>.*?)</a>.*?\s+</h3>\s+<font\s+size="-1">\s+(?<fonts>.*?)...<br>\s+<span\s+class="g">\s+.*?\s+(?<date>\d{4}-\d{1,2}-\d{1,2})\s+</span>?\s+-\s+<a\s+.*?>\s+百度快照</a>.*?</font></td>

但是没有处理em标签

收获园豆:4
世界万物 | 菜鸟二级 |园豆:276 | 2012-07-31 13:39

有完整的语句段没啊?

问天何必 | 园豆:3311 (老鸟四级) | 2012-07-31 13:49

@问天何必: 有完整的语句段没啊??? 什么意思啊?

世界万物 | 园豆:276 (菜鸟二级) | 2012-07-31 13:51

@HJN: 

把你的代码贴一下呀, em我自己处理。 

问天何必 | 园豆:3311 (老鸟四级) | 2012-07-31 16:37

@问天何必: 

  string pattern = "(?i)(?s)<td class=\"f\">.*?<a\\s+.*?href=\"(?<href>.*?)\"\\s+target=\"_blank\">(?<atext>.*?)</a>.*?\\s+</h3>\\s+<font\\s+size=\"-1\">\\s+(?<fonts>.*?)...<br>\\s+<span\\s+class=\"g\">\\s+.*?\\s+(?<date>\\d{4}-\\d{1,2}-\\d{1,2})\\s+</span>?\\s+-\\s+<a\\s+.*?>\\s+百度快照</a>.*?</font></td>";

            Regex reg = new Regex(pattern);
            string input = "<td class=\"f\"><h3 class=\"t\"><a onmousedown=\"return c({'fm':'as'})\" href=\"http://photo.zol.com.cn/photo/15515263.html\" target=\"_blank\"><em>www</em>-<em>8kmm</em>-<em>com</em>-new (1)-中国美女-ZOL相册</a><span class=\"tsuf\"><span style=\"position: relative; \"><div class=\"fav_tip\"></div></span></span> </h3> <font size=\"-1\"> <em>www</em>-<em>8kmm</em>-<em>com</em>-new (1) 中国美女 返回该相册  浏览:7次 评论:0次 被推荐:0次 我要推荐插入表情  *ctrl+Enter快速回复 ...<br> <span class=\"g\">  photo.zol.com.cn/photo/15515263.html 2012-7-20  </span> - <a href=\"#\" target=\"_blank\" class=\"m\"> 百度快照</a><span class=\"liketip\" id=\"like_4537213515679560947\"></span><br> </font></td><td class=\"f\"><h3 class=\"t\"><a onmousedown=\"return c({'y':'BFBFF55B'})\" href=\"http://v.pps.tv/ugc/tag-t1568980.html\" target=\"_blank\"><em>www</em>-<em>8kmm</em>-<em>com</em>视频 PPS 在线视频</a><span class=\"tsuf\"><span style=\"position: relative; z-index: 1000; \"><div class=\"fav_tip\"></div></span></span> </h3> <font size=\"-1\"> 查看包含“<em>www</em>-<em>8kmm</em>-<em>com</em>” 标签的视频,共2个视频标签:<em>www</em>-<em>8kmm</em>-<em>com</em>... Copyright   2005 - 2012 PPStream, Inc. All Rights Reserved...<br> <span class=\"g\">  v.pps.tv/ugc/tag-t1568980.html 2012-7-25  </span> - <a href=\"#\" target=\"_blank\" class=\"m\"> 百度快照</a><span class=\"liketip\" id=\"like_7995101785469501244\"></span><br> </font></td>";
            MatchCollection mc = reg.Matches(input);
            string href = "";
            string text = "";
            string date = "";
            StringBuilder result = new StringBuilder();
            foreach (Match m in mc)
            {
                href = m.Groups["href"].Value;
                text = m.Groups["atext"].Value;
                date = m.Groups["date"].Value;
                result.Append(href + "," + text + "," + date+";\r");
            }
世界万物 | 园豆:276 (菜鸟二级) | 2012-07-31 17:54

@HJN: 

 const string pp = "(?i)(?s)<td class=.*?>.*?<a.*?href=\"(?<href>.*?)\".*?>(?<atext>.*?)</a>.*?</h3>.*?<font.*?>.*?<span.*?>.*?\\s(?<date>\\d{4}-\\d{1,2}-\\d{1,2})\\s+</span>";

搞定了, 大侠有啥补充的没?

问天何必 | 园豆:3311 (老鸟四级) | 2012-08-01 14:13
其他回答(2)
0

http://htmlagilitypack.codeplex.com/wikipage?title=Examples

收获园豆:1
chenping2008 | 园豆:9836 (大侠五级) | 2012-07-31 08:43
0
<em>www</em>-<em>8kmm</em>-<em>com</em>
这部分你要怎么处理?

1、a标签链接内容用这个正则
<a\s.*?\shref="(.*?)" target="_blank">(.*?)</a>
artwl | 园豆:16536 (专家六级) | 2012-07-31 08:52

string ss = "<h3 class=\"t\"><a.*?href=\"(?<url>.*?)\".*?>(?<content>.*?)</a>"

, 

取a标签的url和文本已经好了,这一个就能搞定。  关键是我要取下面的日期……。 “2012-7-20”

“2012-7-25”  在固定的位置的。。 

支持(0) 反对(0) 问天何必 | 园豆:3311 (老鸟四级) | 2012-07-31 09:07

@问天何必: 日期用这个正则

<span class="g">.*?\s(\d{4}-\d{1,2}-\d{1,2})\s+</span>
支持(0) 反对(0) artwl | 园豆:16536 (专家六级) | 2012-07-31 09:33

@artwl: 

int i = 1;
List<KeyWord> keywords = new List<KeyWord>();
string ss = "<h3 class=\"t\"><a.*?href=\"(?<url>.*?)\".*?>(?<content>.*?)</a>";
MatchCollection mcTable = Regex.Matches(html, ss);
foreach (Match mTable in mcTable)
{
if (mTable.Success)
{
KeyWord keyword = new KeyWord();
keyword.ID = i++;
keyword.Title = Regex.Replace(mTable.Groups["content"].Value, "<[^>]*>", string.Empty);
keyword.Link = mTable.Groups["url"].Value;

// MatchCollection mckz = Regex.Matches(html, "<span class=\"g\">(?<content>.*?)</span>");

 

// keyword.kz = mckz.Groups[""].Value;
keywords.Add(keyword);

}
}

 

这是我的代码, 我是想先取所以<td>里面的内容, 然后再匹配。 得到a标签url、文本, 日期。 

支持(0) 反对(0) 问天何必 | 园豆:3311 (老鸟四级) | 2012-07-31 10:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册