利用脚本对CSDN博客实践数据收集与分析

首先,CSDN博客是没有给你做后台统计的,需要你自己收集数据。我写了个shell脚本,主要通过curl来获取HTML页面并自己过滤出需要的数据。

最新的代码共享在这里 https://code.csdn.net/hursing/shell-scripts/tree/master/pv.sh ,在linux和Mac OS X都可以运行(linux可能需要先sudo apt-get install curl),只是输出结果的格式有点差别,以linux的为准。

(可以修改脚本中的id,就可运用到其他博主的博客了,无需登录)

#!/bin/bash
#record pv of hursing's blog. by liuhx

id="hursing"
interval=10
logFile="pvlog.txt"

url="http://blog.csdn.net/"$id"/article/list/"
viewmode="?viewmode=contents"
userAgent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0"

function getMaxPage {
	response=`curl -s -A $userAgent $url"1"$viewmode`
	echo $response | grep -o "共[0-9]\+页</span>" | grep -o "[0-9]\+"
}

function getArticalTitles {
	page=1
	while [ $page -le $1 ]; do
		response=`curl -s -A $userAgent $url$page$viewmode`
		echo "$response" | grep -A 1 "link_title" | grep -vE "link_title|\-\-" | sed "s#^\ \+##"
		let page+=1
	done
}

function queryReadTimes {
	page=$1
	date=`date +%y%m%d%H%M`
	zongshu=""
	cishu=""
	while [ $page -ge 1 ]; do
		response=`curl -s -A $userAgent $url$page$viewmode`
		if [ -z $zongshu ]; then
			zongshu=`echo "$response" | grep -o "<span>[0-9]\+次</span>" | grep -o "[0-9]\+"`
		fi
		pv=`echo "$response" | grep -o "阅读</a>([0-9]\+)" | grep -o "[0-9]\+"`
		cishu=$pv" "$cishu
		let page-=1
	done
	echo $date" "$zongshu" "$cishu
}

maxPage=`getMaxPage`
getArticalTitles $maxPage | tee -a $logFile
while true; do
	queryReadTimes $maxPage | tee -a $logFile
	sleep $interval
done

主流程大致如下:

1.通过“共多少页”为关键字,得到博客文章在目录视图下的最大页数。目录视图能显示更多文章,需要注意到url里有?viewmode=contents后缀。如果CSDN博客改版,那这个脚本可能就会错了。目前2013年9月1日还没改。

2.循环页数,获取所有文章标题的列表。关键字的选取需要分析HTML网页的结构。先把所有文章标题输出到pvlog.txt

3.循环页数,获取所有文章的阅读次数,连同当前时间(精确到分钟)和总访问次数,在同一行输出,追加到pvlog.txt

4.以间隔10秒无限循环第3步

我设的时间间隔是5分钟(interval=300),得到的pvlog.txt放在https://code.csdn.net/hursing/shell-scripts/tree/master/pvlog.txt,部分内容如下:

iOS私有API(二) UIGestureRecognizerDelegate的两个函数
iOS私有API(一) -[UIApplication _cancelAllTouches]
二进制/十六进制转浮点数的编程(互转类似)
Xcode3创建和使用iOS的dylib动态库
利用Objective-C运行时hook函数的三种方法
在windows和mac上以特定ua启动chrome的脚本
Mac OS X编译最新webkit(2013-03-15)
1308292017 36272 241 212 92 120 81 231 288 433 361 522 272 499 300 299 286 503 295 407 406 463 503 550 222 391 531 757 512 520 842 609 566 613 229 745 815 167 207 423 374 384 238 506 316 463 783 412 722 834 1061 512 1194 586 856 334 196 367 1359 374 308 1159 2257 324 406 344 617 157 153 400 167 171 992 501 101 260
1308292022 36274 241 212 92 120 81 231 288 433 361 522 272 499 300 299 286 503 295 407 406 463 503 550 222 391 531 757 512 520 842 609 566 613 229 745 815 167 207 423 374 384 238 506 316 463 783 412 722 834 1061 512 1194 586 856 334 196 367 1359 374 308 1159 2257 324 406 344 617 157 153 400 167 171 992 501 101 260
1308292027 36275 241 212 92 120 81 231 288 433 361 522 272 499 300 299 286 503 295 407 406 463 503 550 222 391 531 757 512 520 842 609 566 613 229 745 815 167 207 423 374 384 238 506 316 463 783 412 722 834 1061 512 1194 586 856 334 197 367 1359 374 308 1159 2257 324 406 344 617 157 153 400 167 171 992 501 101 260
1308292032 36275 241 212 92 120 81 231 288 433 361 522 272 499 300 299 286 503 295 407 406 463 503 550 222 391 531 757 512 520 842 609 566 613 229 745 815 167 207 423 374 384 238 506 316 463 783 412 722 834 1061 512 1195 586 856 334 197 367 1359 374 308 1159 2257 324 406 344 617 157 153 400 167 171 992 501 101 260

文章阅读次数的每一行中,第1个数字是时间(年月日时分),第2个数字是博客总访问次数,后面是74篇文章的阅读次数。

接下来是把数据做成excel表格(我用的是WPS表格,MS Excel的操作类似)。首先把文章标题从pvlog.txt剪切粘贴到excel,然后复制这一整列单元格,再右键单击一个空单元格,选菜单“选择性粘贴”,再勾上“转置”后确定。

那么列就会变成行了。

再用excel打开pvlog.txt,选择以空格为分隔符导入

那就得到数据表了。在首行再插入空行,把刚才的文章标题复制过来,从第3列开始对应,那就完整了。
还可以做的一些操作:

1.加上时间和访问次数的标示

2.访问次数旁边增加一列,数据为访问次数的增量,可以通过公式填充

3.冻结窗格,令首行和前3列一直显示

4.应用条件格式,令增量列大于0的行背景显示为紫色。令阅读次数数据中,大于上一行的格子背景显示为橙色

5.在最后一行的下面,增加一行,统计期间的阅读次数增量(最后一个数据减第一个数据)。

6.增加数据图表。时间段内的增量列的柱状图。

excel文件放在 https://code.csdn.net/hursing/shell-scripts/tree/master/pvall.xls , 打开网页后还需要下载。

通过图表,你可以看出:

1.从8点开始,阅读量变大,程序员开始上班了。

2.早上在10点到12点期间,阅读量最大。这是程序员最有精力阅读文档的时候。按照人的精神状态变化图,这个时段也是脑子较活跃的时候,适合干活。如果你是用博客为营销自己,那最好就是在8点半发表文章,可以在博客首页的列表最前面让人看到哦~~~

3.8月30日晚上11点左右有个小高峰,不知道哪个苦逼的程序员在加班了。

4.24小时都有人在访问。可惜只有CSDN自己能记录IP,不然可以知道是不是国外的同学在看。

还可以做的:

1.看看哪篇文章的阅读次数增量最多,最受欢迎。(28次的《IDA反汇编/反编译静态分析iOS模拟器程序(八)IDA for Mac》)

2.哪个系列/专栏的文章最多人看。 (需要自己计算)

3.总访问次数不等于所有文章的阅读总次数

4.CSDN数据有延迟,总访问次数增加了,但文章的阅读次数并非实时跟着变,过几分钟才变。

5.一天的访问增量,也就是日PV(Page Visit),在230左右。

等等

这里只有8月29日(周四)20:17到8月31日(周六)14:10的数据,记录更长时段还可以做到:

1.星期一到星期天,哪天最多。周六周日加班的人不少啊

2.最近的趋势是哪个专栏的多(自己另外计算专栏包含的文章)。 我的博客目前有3个专栏,通常是WebKit on iOS这个专栏内的文章阅读增量较大。然而最近IDA反汇编专栏的阅读量较大,可能与最近好多app被拒有关,都转去cydia发布了,得多学学越狱的东西,那得靠IDA反编译。

3.程序员的加班高峰在月初还是月底?国家节假日,程序员有得放假吗?

等等

就到这了,本人是程序员,还是别抢产品经理的饭碗吧。请继续自由发挥。

后话:

没想到被放到首页去了,下面这是本文的数据记录,可以看到被放到首页以后,阅读次数大增的情况。阅读增量的峰值在8点半到9点半左右,这正是到公司后看新闻的时间。

时间: 2024-09-16 03:31:21

利用脚本对CSDN博客实践数据收集与分析的相关文章

【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于CSDN博客定期更新排名)

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51387378 目录(?)[+]         上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重启一下服务器才能重新同步后台数据,然后刷新首页才能同步数据.这明显不是我们想要的效果,一般这种网上商城首页肯定不是人为手动同步数据的,那么如何解决呢?我们需要用到线程和定时器来定时自动同步首页数据. 1. Timer和Timer

利用正则表达式抓取博客园列表数据_正则表达式

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

利用正则表达式抓取博客园列表数据

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

2016年年终CSDN博客总结

2015年12月1日,结束了4个月的尚观嵌入式培训生涯,经过了几轮重重面试,最终来到了伟易达集团.经过了长达3个月的试用期,正式成为了伟易达集团的助理工程师. 回顾一年来的学习,工作,生活.各种酸甜苦辣,庆幸是有一群支持我的同事小伙伴,他们同样来自尚观IT培训机构,4年前,他们也是一样,怀着自己的理想考上了理想的大学,4年后,怀着自己的理想通过4个月的培训晋升,巩固自己的知识体系,最终也是找到了一份满意的工作,来到了VTECH, 这一年,收获还是非常大的,获得了公司的升职,同时自己的CSDN博客

【B/S学习总结】我的第100篇CSDN博客

    在学习B/S之前,写过一篇博客<走过C/S,走进B/S>.从那时开始,就认识到了B/S的与众不同.现在,B/S项目结束了,学习了很长时间,是应该整理整理B/S项目下的知识了.例如:它的工作原理,它的页面布局......那一个个绚丽的网页,都是如何实现的?     想了很久,不知道该给这篇博客写个什么标题,总觉得标题写成"B/S学习总结"很是单调.不经意间,发现这篇博客正好是自己CSDN上的第100篇博客,那么,就以此作为博客的标题啦~~顿时变得很有味道的感觉啦~~

自己动手编写CSDN博客备份工具-blogspider

来源:http://blog.csdn.net/gzshun   我之前一直在看lucene,nutch,发现有这么一个现成的小应用,特转来学习下!mark一下. 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫. 网络爬虫最重要的任务,就是从互联网搜索出需要的信息,将网页抓取下来并分析,很多搜索引擎,比如百度,谷歌,后台都有一只很强悍的网络爬虫,用来访问互联网上的网页,图片,视频等内容

为你的CSDN博客添加CNZZ流量统计功能

一.流量统计介绍 流量统计是指通过各种科学的方式,准确的纪录来访某一页面的访问者的流量信息,目前而言,必须具备可以统计. 1.简介 统计独立的访问者数量(独立用户.独立访客): 可以统计独立的IP地址数量: 可以统计页面被刷新的数量. 访客数量,即来了多少访客?他们是哪里人?IP多少? 访客来源,即访客来自哪些网站?百度?天涯?还是163邮箱? 软文营销效果:我贴的链接和软文的效果到底怎么样? 访客的站内移动路径(即站内行为):访客进入网站后,浏览了哪些网页? 关键词广告的效果跟踪:百度竞价广告

CSDN博客添加量子恒道统计代码步骤

CSDN博客添加量子恒道统计代码步骤.   1. 去量子恒道网站统计 注册账户: 2. 添加已有的CSDN博客地址: 3. 添加博客后恒道代码里面会给你一个JavaScript脚本,记下里面的一串数字: 4. 在CSDN  --> 管理博客 --> 博客配置"里面,最下面填写上这串数字,保存配置: 保存之后过一会儿就可以看到统计数据了,直接上图.

【小工具】CSDN博客导出工具-Java集成Maven开发

CSDN博客导出工具 之前一直想把CSDN的博客导入到自己的网站中,可是由于博客比较多,后面受朋友老郭启发,就找了个时间用Java开发了这款小工具. 转载请注明出处:http://chenhaoxiang.cn 本文源自[人生之旅_谙忆的博客] CSDNBlogExport CSDN博客导出工具 之前一直想把CSDN的博客导入到自己的网站中,可是由于博客比较多,后面受朋友老郭启发,就找了个时间用Java开发了这款小工具. Had been trying to CSDN blog into the