【原】得心应手小工具开发——初步统计博客园首页博文的回复率
2012-07-17 16:25
495 查看
【开发动机】
经常会习惯性的打开博客园的首页,看一些精彩的技术文章,这里的技术氛围非常不错,大家写博文的热情也一直感染着我。今天中午时突然有一个想法,统计一下博客园首页的这些博文的回复率吧,顺便练练手。由于是中午休息一个来小时的东西,所以只是作了一个大体的功能实现,没有作太多修饰和输入验证等内容。
【开发实现】
实现的过程也非常简单。一、新建一个winform项目,画一个简单的窗体,拖几个控件上来。
“统计多少个分页”的意思是想要统计的博客园首页的分页数。
二、实现思路:
1、构造一个list存入欲统计的分页URL
2、对每个URL分别获取HTML源代码,然后通过字符串的检索、定位、剥离再检索的方式取到评论数和阅读数,作为键值对存入Dictionary<>.
3、对Dictionary<>中的数据进行统计,拼接字符串 并显示到TextBox.
三、代码部分
Dictionary<int, int> commentAndRead = new Dictionary<int, int>(); private int totalcomment; private int totalread; private void tongji_Click(object sender, EventArgs e) { //有多少个分页就构造出多少个url int pagecount = Convert.ToInt32(this.txtpage.Text); List<string> pageurls = new List<string>(); for(int i=1;i<=pagecount;i++) { if(i==1) { string url = @"http://www.cnblogs.com/index.html"; pageurls.Add(url); } else { string url = @"http://www.cnblogs.com/" + "p" + i; pageurls.Add(url); } } //按url去读取HTML代码 foreach(var url in pageurls) { string strHTML = ""; WebClient wc = new WebClient(); #region 由于公司里访问外网要通过代理,所以要先简单配置一下代理服务器,直接上网的话可以注掉这段 System.Net.WebProxy oWebProxy = new System.Net.WebProxy("172.16.154.100", 8080); oWebProxy.UseDefaultCredentials = true; wc.Proxy = oWebProxy; #endregion wc.Encoding = Encoding.UTF8; //字符编码 strHTML = wc.DownloadString(url); //检索HTML中评论与阅读的量 htmldispose(strHTML); } //统计,拼接字符串,输出 foreach(var c in commentAndRead) { totalread += c.Key; totalcomment += c.Value; } StringBuilder sb = new StringBuilder(); sb.AppendFormat("共检索{0}页,共{1}篇博文 \r\n ",this.txtpage.Text,commentAndRead.Count.ToString()); sb.AppendLine("阅读量:"+totalread); sb.AppendLine("评论量:" + totalcomment); sb.AppendLine("回复率:" + ((Convert.ToDouble(totalcomment) / Convert.ToDouble(totalread))*100).ToString("0.00") + "%"); this.textBox2.Text = sb.ToString(); } private void htmldispose(string html) { int commentstart = html.IndexOf("评论(<span id="); if(commentstart!=-1) { int commentend = html.IndexOf("</span>)</a></span> <span class="); int comment = Convert.ToInt32(html.Substring(commentstart + 37, commentend - commentstart - 37)); string htmlCut = html.Substring(commentend); int readstart = htmlCut.IndexOf("阅读(<span id="); int readend = htmlCut.IndexOf("</span>)</a></span></div>"); int read = Convert.ToInt32(htmlCut.Substring(readstart + 32, readend - readstart - 32)); try { commentAndRead.Add(read, comment); } catch { // 有相同数量的阅读量的博文存在,跳过 } string htmlretain = htmlCut.Substring(readend); htmldispose(htmlretain); } else { return; } }
【工具演示】
【总结】
通过统计,博客园首页的博文的回复率大约为千分之五左右,个人认为不是很高,希望大家还是多多回复啊,你的回复就是博主推出更多原创的动力啊!作者:Tony zhao 欢迎访问:找与淘网
本文出处:http://www.cnblogs.com/ytaozhao 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- GitStats:Git开发历史统计工具 - liyropt - 博客园
- iOS开发工具——统计Crash的工具Crashlytics
- iOS开发工具——统计Crash的工具Crashlytics-备用
- iOS开发工具——统计Crash的工具Crashlytics
- iOS开发工具——统计Crash的工具Crashlytics
- iOS开发工具——统计Crash的工具Crashlytics
- iOS开发工具篇-AppStore统计工具
- iOS开发工具——统计Crash的工具Crashlytics
- [开发工具]借助dillinger.io,在博客园写markdown
- iOS开发工具篇-AppStore统计工具
- ArcGIS Server 开发初步 -- 自定义工具
- 【原】得心应手小工具开发——网易公开课课程下载链接提取器
- push统计工具开发小结
- 微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章
- SNF开发平台WinForm-EasyQuery统计分析-效果-非常牛逼的报表查询工具
- ArcGIS Server 开发初步 -- 自定义工具
- 博客更改地址后在home首页访问不了以前的博文,以此推想博客园的数据库设计
- Java开发工具及程序设计初步
- C#开发cnblogs博客园闪存工具源码
- iOS开发工具——统计Crash的工具Crashlytics