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=\"(?<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         }

 源码下载

转载于:https://www.cnblogs.com/imhaiyang/p/3983004.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值