利用脚本对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点半左右,这正是到公司后看新闻的时间。


目录
相关文章
|
1月前
|
数据采集 缓存 监控
京东商品API技术对接手册(2025版)
本接口文档涵盖基础服务能力、核心接口规范、业务场景实现及开发者注意事项。包括请求性能、数据覆盖、同步机制、认证鉴权、流量控制等内容,适用于商品信息获取、价格监控、库存预警等场景,助力开发者高效对接系统。
|
4月前
|
自然语言处理 数据管理 数据库
告别切屏|阿里云DMS MCP+通义灵码30分钟搞定电商秒杀开发
DMS MCP+通义灵码的梦幻组合,标志着研发流程从“工具堆砌”向“智能闭环”的跃迁。通过统一数据管理、自然语言交互与自动化代码生成,开发者可专注于业务创新,而无需被琐碎的数据库操作所束缚。
告别切屏|阿里云DMS MCP+通义灵码30分钟搞定电商秒杀开发
|
存储 大数据 分布式数据库
大数据分析的下一代架构--IOTA架构设计实践
IOTA的特点: [x] 去“ETL”化 [x] 高效:时时入库即时分析 [x] 稳定:经过易观5.8Pb,5.2亿月活数据锤炼 [x] 便捷:支持SQL级别的二次开发和UDAF定义 [x] 扩充性强:组件基于Apache开源协议,可支持众多开源存储对接
19137 0
|
6月前
|
存储 监控 安全
RFID固定资产管理
RFID(射频识别)技术为现代企业固定资产管理提供了创新解决方案。相比传统人工管理方式,RFID技术通过标签与阅读器实现资产快速、精准识别,大幅提升管理效率与准确性。它在资产采购、入库、日常管理、盘点及折旧报废等环节均有广泛应用,帮助企业降低丢失率、优化资源配置并增强竞争力。尽管存在成本和技术标准等挑战,但随着物联网、大数据等技术融合,RFID固定资产管理将更智能化,助力企业高质量发展。
|
5月前
|
存储 机器学习/深度学习 缓存
vLLM 核心技术 PagedAttention 原理详解
本文系统梳理了 vLLM 核心技术 PagedAttention 的设计理念与实现机制。文章从 KV Cache 在推理中的关键作用与内存管理挑战切入,介绍了 vLLM 在请求调度、分布式执行及 GPU kernel 优化等方面的核心改进。PagedAttention 通过分页机制与动态映射,有效提升了显存利用率,使 vLLM 在保持低延迟的同时显著提升了吞吐能力。
2069 18
vLLM 核心技术 PagedAttention 原理详解
|
前端开发 JavaScript API
现代Web开发中的前后端分离架构
本篇文章探讨了前后端分离架构在现代Web开发中的应用与优势。
|
Java 测试技术 Android开发
Android性能测试——发现和定位内存泄露和卡顿
本文详细介绍了Android应用性能测试中的内存泄漏与卡顿问题及其解决方案。首先,文章描述了使用MAT工具定位内存泄漏的具体步骤,并通过实例展示了如何分析Histogram图表和Dominator Tree。接着,针对卡顿问题,文章探讨了其产生原因,并提供了多种测试方法,包括GPU呈现模式分析、FPS Meter软件测试、绘制圆点计数法及Android Studio自带的GPU监控功能。最后,文章给出了排查卡顿问题的四个方向,帮助开发者优化应用性能。
853 4
Android性能测试——发现和定位内存泄露和卡顿
|
安全 Java UED
掌握SpringBoot单点登录精髓,单点登录是一种身份认证机制
【8月更文挑战第31天】单点登录(Single Sign-On,简称SSO)是一种身份认证机制,它允许用户只需在多个相互信任的应用系统中登录一次,即可访问所有系统,而无需重复输入用户名和密码。在微服务架构日益盛行的今天,SSO成为提升用户体验和系统安全性的重要手段。本文将详细介绍如何在SpringBoot中实现SSO,并附上示例代码。
292 0
commons-httpclient 和 httpclient 区别
commons-httpclient 和 httpclient 区别
518 0
下一篇
oss教程