首页 > 代码库 > C#.Net使用正则表达式抓取百度百家文章列表

C#.Net使用正则表达式抓取百度百家文章列表

    工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码:

    一:获取百度百家网页内容

 1 public List<string[]> GetUrl() 2         { 3             try 4             { 5                 string url = "http://baijia.baidu.com/"; 6                 WebRequest webRequest = WebRequest.Create(url); 7                 WebResponse webResponse = webRequest.GetResponse(); 8                 StreamReader reader = new StreamReader(webResponse.GetResponseStream()); 9                 string result = reader.ReadToEnd();10                 reader.Close();11                 webResponse.Close();12                 return AnalysisHtml(result);13             }14             catch (Exception ex)15             {16                 throw ex;17             }18         }

    二:通过正则表达式筛选

 1 public List<string[]> AnalysisHtml(string htmlContent) 2         { 3             List<string[]> list = new List<string[]>(); 4             string strPattern = "<h3><a\\s*.*>(?<Title>[^<]+)</a></h3>.*\\s*<p\\s*class=\"feeds-item-text\">(?<Abstract>[^<]+)<a\\s*href=http://www.mamicode.com/"(?<Url>.*)\"\\s*target=\"_blank\"\\s*class=\"feeds-item-more\"\\s*mon=\".*\\s*\">.*\\s*</a></p>"; 5             Regex regex = new Regex(strPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant); 6             if (regex.IsMatch(htmlContent)) 7             { 8                 MatchCollection matchCollection = regex.Matches(htmlContent); 9                 foreach (Match match in matchCollection)10                 {11                     string[] str = new string[3];12                     str[0] = match.Groups[1].Value;//获取到的是列表数据的标题13                     str[1] = match.Groups[2].Value;//获取到的是内容14                     str[2] = match.Groups[3].Value;//获取到的是链接到的地址15                     list.Add(str);16                 }17             }18             return list;19         }

 源码下载

C#.Net使用正则表达式抓取百度百家文章列表