利用正则表达式获取博客园随笔(二)

  有几个朋友提到说我昨天开头提到的那些跟正则不符,其实确实也是不符合的。先来说说原因吧,之前呢因为各种原因,好久没上VS了,然后系统又是自动打补丁的,然后就更新了那2个补丁。然后吧,前天想开始写的时候打开一看吧,新建错误,打开原来的显示VS出现问题什么的。然后就想想自己这系统装了将近4个月了,然后就把他给还原了,所以才有了前天的那篇。然后昨晚回来打开一看,又是这样。觉得大家应该会碰到,所以就说了一下,顺便自己作为一个保留。废话不多说了开始。

  昨天我们写的那个正则已经可以把每条随笔给匹配出来了,如下图所示:

然后么,我们再仔细观察单条随笔上的内容,然后找寻规律,我匹配出来的正则是这样的:

"<h3><a.*?href=\"(?<href>.*?)\".*?>(?<Title>.*?)</a></h3>.*?<a .*? class=\"lightblue\".*?>(?<Author>.*?)</a>.*?发布于.*?(?<time>.*?)<span"

(感觉有点烂的样子,但好歹已经可以匹配出来了不是么,各位有更好的匹配求推荐啊)

既然匹配出来了那就可以获取了.下面贴上代码

DataTable dt = new DataTable();//定义一个datatable来存放数据
dt.Columns.Add("Title");
dt.Columns.Add("Author");
dt.Columns.Add("time");
dt.Columns.Add("href");
string Html= GetHtml("http://www.cnblogs.com/");
Regex regexContent = new Regex("<div class=\"post_item_body\">(?<content>.*?)<div class=\"clear\"></div>",RegexOptions.Singleline);//获取单个随笔数据
Regex regexProperty = new Regex("<h3><a.*?href=\"(?<href>.*?)\".*?>(?<Title>.*?)</a></h3>.*?<a .*? class=\"lightblue\".*?>(?<Author>.*?)</a>.*?发布于.*?(?<time>.*?)<span",
    RegexOptions.Singleline);//获取标题、时间、链接、作者等
if (regexContent.IsMatch(Html))
    {
        var blog = regexContent.Matches(Html);
        foreach (Match item in blog)
        {
            if (regexProperty.IsMatch(item.ToString()))
                 {
                      var Property = regexProperty.Match(item.ToString());
                      dt.Rows.Add(Property.Groups["Title"].Value, Property.Groups["Author"].Value, Property.Groups["time"].Value, Property.Groups["href"].Value);

                 }
         }
    }
    dgvCnblogs.AutoGenerateColumns = false;
    dgvCnblogs.DataSource = dt;

这个加上昨天的那些可以直接运行的。下面放上效果:

各位可以自己运行看看。还是那句话:各位有问题或者有更好的方法请留言。

转载于:https://www.cnblogs.com/suixingerxing/p/3231356.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值