经过几天的努力,最终还是给我研究出来了。心里还是挺高兴的袄。其实网页采集也没有用到什么高深的技术,都是些普普通通的技术,只不过效果比较神奇,就会让人感觉到整个都比较深奥,如果你想学习.NET的数据采集,以及思路,那么请看完。
C#数据采集大体可以分为两部曲:
一部曲:
因为要采集别人网页上的内容,所有我们先要得到要采集网页上的html代码,获取html代码还是比较简单。利用WebClient的DownloadData(url)得带byte数组,然后在转换成string字符串。
具体代码如下:
- ///<summary>
- ///获取网页源代码
- ///</summary>
- ///<paramname="url">URL路径</param>
- ///<paramname="encoding">编码方式</param>
- publicstringGetHTML(stringurl,stringencoding)
- {
- WebClientweb=newWebClient();
- byte[]buffer=web.DownloadData(url);
- returnEncoding.GetEncoding(encoding).GetString(buffer);
- }
二部曲:
现在我们得到了目标网页的html代码,那么我们就开始时得扣取我们想要的数据。扣取数据无疑就要用到强大的正则表达式了。利用正则表达式的匹配来获取我们要的内容,这里可以过滤掉制定的html代码,剩下的就是内容了。
C#数据采集具体代码如下:
- Htmlhtml=newHtml();
- //得到指定页面的html代码,***个参数为url(貌似都知道),第二个是目标网页的编码集
- stringhtmlCode=html.GetHTML("http://gvod.tom59.cn/List.asp?ClassId=3","gb2312");
- //正则表达式
- Regexregexarticles=newRegex("<td\\s+height=\"\\d+\"><a\\s+href=\".+DataId=(?<id>\\d+)\"\\s+target=\"_blank\">(?<title>.+)</a>.*</td>");
- //所有匹配表达式的内容
- MatchCollectionmarticles=regexarticles.Matches(htmlCode);
- ///遍历匹配内容
- foreach(Matchminmarticles)
- {
- Console.Write("标题:"+m.Groups["title"].Value+"\n");
- Console.Write("id:"+m.Groups["id"].Value+"\n");
- Console.Write("\n");
- }
以上就是C#数据采集的核心代码,关于正则表达式我在这里就不详细讲解了(其实正则表达式我也是菜鸟哈)。
C#数据采集结语:
大部分看似很神奇的功能,都是我们平常所用的功能拼加起来的,其实仔细分析起来也没有多大的难度,只要能够认真研究。
本文来自畫上句號的新浪博客文章《asp.net/C#网页数据采集》
【编辑推荐】