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

我抓取网页内容 怎么把不符合要求的也给抓出来了?正则式有问题?
我想取得一些双色球开奖的数据 想在"http://trend.baidu.lehecai.com/ssqZst!ssqjbzs.jhtml?flag=jbzs 这个网页中抓取一些数据 :
  <td style="background-color: #FEFFEF;" class="chartBall01 ">06</td> //红球数据
  <td style="background-color: #EEF5FD;" class="chartBall02 ">01</td> //篮球数据
经分析 主要应该是 class 的不同 可是 我写的程序 竟然把:<td class="yl01" style="background-color: #FEFFEF;">3</td>
也抓取下来了! 不知道是哪出了问题 我的代码如下:或者谁有更简便的获取开奖数据的方法?
C# code


    class Program
    {
        static string url = "http://trend.baidu.lehecai.com/ssqZst!ssqjbzs.jhtml?flag=jbzs";
        static void Main(string[] args)
        {
            WebClient wc = new WebClient();
            wc.Encoding = Encoding.UTF8;
            string s = wc.DownloadString(url);
            //Console.Write(s);
            //<td style="background-color: #FEFFEF;" class="chartBall01 ">06</td>
            //<td style="background-color: #EEF5FD;" class="chartBall02 ">01</td>
            s = s.Replace("\r", " ").Replace("\n", " ");
            MatchCollection matches = Regex.Matches(s, "<td(.*?)class=\"chartBall01 \"(.*?)>(\\d+)</td>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
            List<string> list = new List<string>();
            for (int i = 0; i < matches.Count; i++)
            {
                Match match = matches[i];
                Console.WriteLine(match.Value);
            }

       
            Console.ReadKey();
        }
}



------解决方案--------------------
C# code
MatchCollection matches = Regex.Matches(s, "<td([^>]*?)class=\"chartBall01 \"(.*?)>(\\d+)</td>", RegexOptions.IgnoreCase | RegexOptions.Multiline);