【前端】统计博客园总阅读量
✨效果展示
在博客后台页面打开控制台 运行以下代码
截止2024-1-9,总阅读量已达28w!!
✨代码实现
/**
输入博客地址用户名
例如 https://www.cnblogs.com/Flat-White 请输入 Flat-White
*/
function countBlogReadings(CnblogsName){
console.log("正在统计 "+CnblogsName+" 的博客的总阅读量...");
//任务线程内部的全局变量数组,用于保存数据
var statisticsArray = [];
//发送ajax请求博客园
function getReadData(page){
//是否还要继续
var flag = false;
//使用XMLHttpRequest对象请求博客园
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://www.cnblogs.com/"+CnblogsName+"/default.html?page=" + page, false);//同步
xhr.setRequestHeader("Content-Type", "text/html; charset=utf-8"); //设置响应格式
xhr.onreadystatechange = function() {
// readyState == 4说明请求已完成
if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304) {
//使用正则处理HTML字符串,需要设置全局标识
//var myRe = /huanzi-qch(\s*)阅读(\s*)[(]+[1-9]\d+[)]/g;
var myRe = /阅读(\s*)[(]+[1-9]\d+[)]/g;
var resultArray = xhr.responseText.match(myRe);
//合并到全局变量数组中
statisticsArray = statisticsArray.concat(resultArray);
//判断这个即可:resultArray.length > 0 如果还有文章集合,则返回true
if(resultArray && resultArray.length > 0){
flag = true;
}
}
};
xhr.send();
return flag;
}
//循环调用getReadData,默认最大页数 100 (100页,每页10条记录,相对于1000篇博客,已经够多了吧?)
for(var i = 1;i < 100;i++){
//如果返回false则立即跳出循环
if(!getReadData(i)){ break;}
}
//处理全局数组
for(var i = 0;i < statisticsArray.length;i++){
if(statisticsArray[i]){
//只保留数字部分
statisticsArray[i] = statisticsArray[i].match(/[1-9]\d+/)[0];
}else{
statisticsArray.splice(i, 1);
}
}
//数组求和,需要返回主线程的最终值
var count = eval(statisticsArray.join("+"));
const currentDate = new Date();
const year = currentDate.getFullYear();
const month = (currentDate.getMonth() + 1).toString().padStart(2, '0');
const day = currentDate.getDate().toString().padStart(2, '0');
const hours = currentDate.getHours().toString().padStart(2, '0');
const minutes = currentDate.getMinutes().toString().padStart(2, '0');
const seconds = currentDate.getSeconds().toString().padStart(2, '0');
const formattedTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
console.log("统计结束");
console.log("截止:" + formattedTime + " 总阅读量为:"+count);
}
countBlogReadings('Flat-White');
✨参考及引用
https://www.cnblogs.com/jichi/p/15759964.html
⭐转载请注明出处
本文作者:双份浓缩馥芮白
原文链接:https://www.cnblogs.com/Flat-White/p/17955141
版权所有,如需转载请注明出处。