回复 第6楼 的 itellin:所有的代码都在:https://github.com/JiangXD/cos_stat
ypchen版主要我写一段文字来描述一下本帖子数据收集和分析的思路。其实我本人才疏学浅,尚有很多不懂的地方。权且算是抛砖引玉,和大家一起探讨吧。
1.数据的收集:其实最快和最准确的途径是直接导出后台数据库数据进行分析。但是作为普通会员,没有办法直接接触到这些。就只有采取暴力下载页面,提取数据来分析。
COS社区的帖子采用相对时间,不利于分析。但是帖子下方的“RSS 订阅本帖子”中,可以下载到一个xml文件,里面有该帖子最新20条的回复的精确信息(标题、作者、准确时间等)。如果一个帖子的回复不足20条,那么最末一条就是帖子本身。
RSS链接的地址是有规律的:如http://cos.name/cn/rss/topic/110710,最后一个数字是帖子的编号。帖子的地址也是这样的规律。第1号是谢大发表的开山贴。
单从数字来看,本论坛自开创以来已有11万余帖子,但是实际只有2万多帖子,剩下的9万应该都是被删除的广告贴。版主们辛苦了!
所以如果图编程简,单从1号累加,逐个下载的话,就会浪费大量的时间和服务器资源。所以第一步是收集帖子编号。从首页来看,我们有1076页帖子目录,每页20条。从第2页开始,每页目录的地址也是有规律的:如第二页:http://www.cos.name/cn/page/2。最后一个是页码。所以可以采用一段简短的shell脚本来直接收集所有的帖子编号。代码如下。
<br />
#/bin/sh<br />
index=2</p>
<p>while [ $index -le 1075 ]<br />
do<br />
echo $index<br />
curl -o - \<br />
--user-agent "Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17."\<br />
http://cos.name/cn/page/$index | sed -n '/topic.*target/{s,^.*href=".*topic/,,; s,".*$,,; s,/.*$,,; 279q; p;}' >> ids.txt</p>
<p> index=$(($index + 1))<br />
done<br />
这段代码大约1个小时就完成执行,收集到的帖子序号存入在ids.txt文件中,然后在R里面排个序,存入sort_ids.txt。
接下来利用帖子编号收集RSS信息,并用XML包来解析我们想要的字段(作者、帖子序号、是否回复、发表时间),存入文件。
具体代码在 https://github.com/JiangXD/cos_stat 的collect.R文件中。采集的数据存入cosdata.txt文件中,以备后续的分析。</p>
2.数据的分析
有了那个cosdata.txt我们就可以大展拳脚了,这些是各位的专长,我就不好献丑了。
简单画时间分布一个散点图,就可以看出大牛的活动规律:谢大是夜猫子、lucky是作息规律的….,还可以看出谢大出国后,活动规律发生了逆转。
当然还可以做更细致的分析,敬请大家发挥。
数据和代码都在 https://github.com/JiangXD/cos_stat 。
大家还是不要运行代码,给服务器增加负担了。直接分析 cosdata.txt的数据吧,这个文件会保持随时更新。
看下面:

大牛出国后,时间翻转了,有木有?
大牛的红色灵魂一直守护社区,有木有?
白色的竖条一般都是过年,但08年8月出现了一个异常白色断裂带(停机),就是因为大牛上半年不在,有木有?
大牛回来后,系统恢复了,有木有?
创世纪的人都渐行渐远了,唯有大牛永恒流传,有木有?