利用脚本对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的为准。

首先,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点半左右,这正是到公司后看新闻的时间。


目录
相关文章
|
5月前
|
数据采集 数据处理 开发者
Python爬虫技术在数据收集与分析中的应用
随着互联网信息的爆炸式增长,数据收集与分析变得愈发重要。本文将介绍Python爬虫技术在实际项目中的应用,探讨其在数据收集、清洗和分析过程中的作用,以及如何利用Python相关库提高爬虫效率。
|
5月前
|
数据采集 SQL 分布式计算
企业数据采集与分析(论文+源码)_kaic
企业数据采集与分析(论文+源码)_kaic
|
4月前
|
数据采集 JSON API
自动化Reddit图片收集:Python爬虫技巧
自动化Reddit图片收集:Python爬虫技巧
|
5月前
|
安全 数据可视化 网络协议
情报收集神器:Maltego 保姆级教程(附链接)
情报收集神器:Maltego 保姆级教程(附链接)
|
数据挖掘
一文速览-数据分析基础以及常规流程
一文速览-数据分析基础以及常规流程
119 0
一文速览-数据分析基础以及常规流程
|
数据可视化 数据挖掘 大数据
和你谈谈数据分析报告
做一份好的数据分析报告,大到成为能否帮助企业做出正确的商业决策,小到成为能否说服老板获取业务资源的关键因素。因此做出一份高质量的数据分析报告是一个职场人必备的利器。
1584 0
和你谈谈数据分析报告
下一篇
无影云桌面