C#.Net基于正则表达式抓取百度百家文章列表的方法示例

本文实例讲述了C#.Net基于正则表达式抓取百度百家文章列表的方法。分享给大家供大家参考,具体如下:

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

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

public List<string[]> GetUrl()
{
  try
  {
    string url = "http://baijia.baidu.com/";
    WebRequest webRequest = WebRequest.Create(url);
    WebResponse webResponse = webRequest.GetResponse();
    StreamReader reader = new StreamReader(webResponse.GetResponseStream());
    string result = reader.ReadToEnd();
    reader.Close();
    webResponse.Close();
    return AnalysisHtml(result);
  }
  catch (Exception ex)
  {
    throw ex;
  }
}

二、通过正则表达式筛选

public List<string[]> AnalysisHtml(string htmlContent)
{
  List<string[]> list = new List<string[]>();
  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>";
  Regex regex = new Regex(strPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant);
  if (regex.IsMatch(htmlContent))
  {
    MatchCollection matchCollection = regex.Matches(htmlContent);
    foreach (Match match in matchCollection)
    {
      string[] str = new string[3];
      str[0] = match.Groups[1].Value;//获取到的是列表数据的标题
      str[1] = match.Groups[2].Value;//获取到的是内容
      str[2] = match.Groups[3].Value;//获取到的是链接到的地址
      list.Add(str);
    }
  }
  return list;
}

附:完整实例代码点击此处本站下载

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#正则表达式用法总结》、《C#编码操作技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • C#使用正则表达式抓取网站信息示例

    本文实例讲述了C#使用正则表达式抓取网站信息的方法.分享给大家供大家参考,具体如下: 这里以抓取京东商城商品详情为例. 1.创建JdRobber.cs程序类 public class JdRobber { /// <summary> /// 判断是否京东链接 /// </summary> /// <param name="param"></param> /// <returns></returns> public

  • C#基于正则表达式抓取a标签链接和innerhtml的方法

    本文实例讲述了C#基于正则表达式抓取a标签链接和innerhtml的方法.分享给大家供大家参考,具体如下: //读取网页html string text = File.ReadAllText(Environment.CurrentDirectory + "//test.txt", Encoding.GetEncoding("gb2312")); string prttern = "<a(\\s+(href=\"(?<url>([

  • C#正则函数用法实例【匹配、替换、提取】

    本文实例讲述了C#正则函数用法.分享给大家供大家参考,具体如下: System.Text.RegularExpressions 命名空间包含一些类,这些类提供对 .NET Framework 正则表达式引擎的访问.该命名空间提供正则表达式功能,可以从运行在 Microsoft .NET Framework 内的任何平台或语言中使用该功能. 1 正则表达式的常见使用 ① 格式匹配 /// <summary> /// 邮箱格式验证 /// </summary> /// <retu

  • C#基于正则表达式实现获取网页中所有信息的网页抓取类实例

    本文实例讲述了C#基于正则表达式实现获取网页中所有信息的网页抓取类.分享给大家供大家参考,具体如下: 类的代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using

  • 使用C#正则表达式获取必应每日图片地址

    微软的Bing搜索引擎首页每天都会提供了一些有趣的图片,下面使用正则表达式获取图片的地址,不管是在手机app还是在网站上都是很好的图片素材,而且每天更新,非常不错. 首先访问微软的API,该地址返回的是xml文本,获取xml文本后使用正则表达式匹配url节点中的内容,加上必应主页链接即可获得图片的真实网址.下面是获取网址的全部代码. string InfoUrl = "http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1"; Http

  • C#匹配中文字符串的4种正则表达式分享

    本文介绍在C#中使用匹配中文的正则表达式,包括纯中文.有中文.中文开头.中文结尾等几个正则表达式示例.在正则表达式中,中文可以通过Unicode编码来确定正则表达式范围. 在C#中,匹配中文的正则表达式用Unicode来表示时,范围是: [\u4e00-\u9fa5].所以,在此基础上,我们可以得到如下一些正则表达式. 1.匹配字符串全部是中文字符的正则表达式 复制代码 代码如下: "^[\u4e00-\u9fa5]+$" 说明:"^"表示字符串开头,"$

  • c#使用正则表达式匹配字符串验证URL示例

    在System.Text.RegularExpression命名空间里,有正则表达式方法. 复制代码 代码如下: using System.Collections.Generic; using System.Text;using System.Text.RegularExpressions; namespace RegexDemo{    class Program    {        static void Main(string[] args)        {            R

  • C#正则表达式匹配HTML中的图片路径,图片地址代码

    一般来说一个 HTML 文档有很多标签,比如"<html>"."<body>"."<table>"等,想把文档中的 img 标签提取出来并不是一件容易的事.由于 img 标签样式变化多端,使提取的时候用程序寻找并不容易.于是想要寻找它们就必须写一个非常健全的正则表达式,不然有可能会找得不全,或者找出来的不是正确的 img 标签.我们可以从 HTML 标签的格式去想应该怎么建这个正则表达式.首先要想一下 img

  • C#正则表达式获取下拉菜单(select)的相关属性值

    给几个在C#中,使用正则表达式取页面下拉菜单(select)中的值示例: 复制代码 代码如下: //取html中全部 select 的 name Regex reg_name = new Regex(@"(?<=<select name=\"").*?(?=\"")"); //取html中全部<select>项的值 Regex reg_select = new Regex("(?is)<select nam

  • 实例分析js和C#中使用正则表达式匹配a标签

    废话不多说,都在代码中,直接上 JS代码: 复制代码 代码如下: <html> <head> <script language="javascript">     var a='<P><A href=\'~abc/ccg/ab.jpg\' width="3">文字</A><A width="4" style="color:#ddd; font-weight:b

随机推荐