极客狮子 发表于 2012-12-10 13:24:03

猜猜博客园最热门的标签

<div id="cnblogs_post_body">每天翻开技术博客,映入眼帘的是各种技术的关键字,五花八门,今天突然想知道最近比较热门的技术,谷歌搜了半天,得不出所以然。干脆自己用C#写了个小程序,用来统计博客园排名前1000的园主最爱的tag,从某方面也能反映出当下(最近几年)热议的话题吧。
本文利用了HtmlAgilityPack库,这是一个将Html转换为Xml,并可使用XPath语法来查询的HTML解析库。小程序运行大概5分钟左右(公司网速最近太慢,不然还会更快一点)就将排名前1000名博客的tag统计出来了,解析起来相对于Winista.Htmlparser.Net而言还是比较快速高效的。
一、获取博客园排名前1000的博客地址

首页有一个按积分排行页面链接,上面列出了博客园前3000名:
http://www.cnblogs.com/AllBloggers.aspx
http://pic002.cnblogs.com/images/2012/28631/2012080210413028.png
其中博客路径与rss的Xpath应该是:".//a[@href]" ,同时rss的链接后面都带有rss.aspx,于是我把它过滤了,剩下的即是排名前3000的博客地址
<div class="cnblogs_code">            int Max = 1000;            HtmlWeb webClient = new HtmlWeb();            HtmlDocument doc = webClient.Load("http://www.cnblogs.com/AllBloggers.aspx");            HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//a[@href]");            List<string> urllist=new List<string>();            if (hrefList != null)            {                foreach (HtmlNode href in hrefList)                {                  HtmlAttribute att = href.Attributes["href"];                  if(!att.Value.Contains("rss.aspx"))                  {                        urllist.Add(att.Value);                  }                  if (urllist.Count >= Max)                        break;                }            }
页: [1]
查看完整版本: 猜猜博客园最热门的标签