下面进入正题。首先需要注意的是采集网页上数据的唯一方式是必须获取需要采 集页面的源代码,这点想必大家很清楚。因为我们不知道对方网站的数据库服务器连接方式,我们只能在页面的源代码中找寻我们想要的东西。 这无疑就是对大量字符串进行处理,那么我们如何处理这些含有大量html标记与内容的代码呢?可能解决问题的方式有很多种,但我认为用正 则表达式来解决这个问题会很好。
通过上面的话,我谈到了两个知识点,我们来总结一下流程。
1.获取需要采集页面的源代码。
2.利用正则表达式处理这些代码中我们想要的内容。
下面做一些准备工作,写一个实体类存储文章的信息。例如:标题、作者、发布时间、浏览次数,等。











































































































































获取采集网页源代码的方式,也很简单,我单独做成了一个类。



























· 我在外资公司的2个月 (阅读:1909) (评 论:21) (2008-6-25 13:44) | yesry |
· 为什么尽量避免使用触发器? (阅 读:1490) (评论:15) (2008-6-25 03:35) | 凉面 |
· Discuz!NT 系统架构分析 (阅 读:1391) (评论:18) (2008-6-25 12:35) | 韩龙 |
· 硬盘那点事儿 (阅读:1342) (评 论:15) (2008-6-25 11:16) | 李战 |
只 需要得到标题、阅读次数、评论、时间、作者即可。那么我们就来分析一下关键信息的源代码特征。










这就是我们需要采集信息的源代码。在开始写正则表达式之前我需要说明一点,我们都知道,这些 内容也是动态产生的。所以它们的格式肯定是固定的。这样我们就可以利用一个正则表达式正确的采集到该页面所有信息。我觉得没必要在这片文章中详细解释正则 表达式的含义,因为这需要多练习。

这些让您可能阅读起来很吃力,但我想学过正则表达式的人会嘲笑我,因为我的正则写 的不够灵活。我要为没有接触过正则表达式的朋友简单介绍下,我也只是刚入门。正则表 达式就是通过描述字符串的特征来进行匹配。这也是我们为什么需要分析页面源代码的原因。至于怎么去匹配,其实也不难,我提供一些文章给各位 参考。
正则表达式学习笔记:http://hedong.3322.org/archives/000244.html
正 则表达式30分钟入门:http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng- se.htm
我就是通过这两篇文章入门,并利用正则表达式写出了我喜欢的程序。至于更多的文章可以去网络寻找。
上面说到 的是关键的正则表达式,下面还需要说一下怎么去取。



























MatchCollection marticles = regexarticles.Matches(htmlcode);
通过此句代码获取多个匹配的内容。
foreach (Match m in marticles)
循环时需要用Match类取一条匹配内容,m.Groups["title"].Value 取出指定分组中的信息,这个分组是指(?<title>.+) ,“?<title>”这就是给匹配内容分组为title的代码。代码就是这样了,没有什么技术含量,来总结一 下做采集的一个流程吧。
1.取指定页面的源代码
2.分析源代码中我们想要获得内容的特征
3.通过特征写出正则表达式进行匹配
4.遍历匹配内容装入集合
流程就是这样,我把整个案例的代码打包供大家参考,如有什么问题请留言。
源码下载
采集出的数据可能与博客园显示顺序不太一致,因为是整个页面的文章,没有做分类处理。但数据绝对是一致的。