【前端】统计博客园阅读总量

发布时间 2024-01-09 19:33:14作者: 双份浓缩馥芮白

✨效果展示

在博客后台页面运行以下代码

image-20240109192443226

截止2024-1-9,阅读总量已达28w!!


✨代码实现

/**
    输入别人的博客园地址名称
*/
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("+"));

    console.log("统计结束,总阅读量为:"+count);
}
countBlogReadings('Flat-White');

✨参考及引用

https://www.cnblogs.com/jichi/p/15759964.html


⭐转载请注明出处

本文作者:双份浓缩馥芮白

原文链接:https://www.cnblogs.com/Flat-White/p/17955141

版权所有,如需转载请注明出处。