python | 分析下2023年你写的文章吧

前言

2023正在悄咪咪的过去,2024即将到来,你是否和我一样,收到了掘金的系统通知呢?

你又是否在想,我应该写一些什么东西呢?在掘金掘了一整年,到底收获了金子还是泥土呢?本篇文章就将用短短数十行python代码来扒一扒我们在掘金2023写作的一整年吧。

不为别的,虽然我非常喜欢掘金社区,但是还是吐槽一下,掘金创作者中心做的挺烂的。(此条最好仅优弧可见)

这里先贴一下代码的执行效果:

文章源数据收集

在掘金网页中,点击个人头像,选择【我的主页】,在列表中,选择文章,进入我的主页截图如下:

在主页中,选择文章,就可以看到此前写过的所有文章,截图如下:

最后在网页上按下F12,即可进入到调试模式,选择网络,在搜索框中输入query_list,图示如下:

最后我们使用滚轮往下滑动文章,即可看到请求的数据信息,例如:

点开任何一个请求,选择响应即可看到掘金返回给我们的数据信息,例如:

将每个响应的请求都复制到文件files.txt中,我们即可得到一份这样的数据:

代码编写

得到掘金原始文件后,即可开始编写代码进行分析了,其实代码非常简单,就是循环读取信息,获取其中核心的几个字典进行分析即可,其中返回的数据中,data才是我们真正需要的数据,截图为:

data中的每一个列表,表示一篇文章,熟知的作者信息是被放到author_user_info中,其中截图如下:

而文章的基本信息是被存储在article_info中的,包括阅读量、点赞量、留言量 和 收藏量等等,这个只要结合文章的数值进行搜索记了,截图如下:

这里不啰嗦了,整个分析代码已经写好了,代码整理如下:

python 复制代码
import json
import time

timeStart = "2023-01-01"
timeEnd = "2024-01-01"

count = view_count = digg_count = comment_count = collect_count = 0
maxCollect = maxComment = maxDigg = maxView = [0,""].copy()

timeStartUnix = time.mktime(time.strptime(timeStart,"%Y-%m-%d"))
timeEndUnix = time.mktime(time.strptime(timeEnd,"%Y-%m-%d"))

with open("files.txt",encoding="utf-8") as f:
    while True:
        line = f.readline()

        if len(line) == 0:
            break

        resultData = json.loads(line)

        for i in resultData["data"]:

            article_c = int(i["article_info"]["ctime"])

            if article_c >= timeStartUnix and article_c < timeEndUnix:
                userName = str(i["author_user_info"]["user_name"])
                count = count + 1
                print("%d: %s 《%s》 " %(count,time.strftime("%Y-%m-%d", time.localtime(int(article_c))) ,i["article_info"]["title"]))
                view_count = view_count + int(i["article_info"]["view_count"])
                digg_count = digg_count + int(i["article_info"]["digg_count"])
                comment_count = comment_count + int(i["article_info"]["comment_count"])
                collect_count = collect_count + int(i["article_info"]["collect_count"])

                if maxCollect[0] < int(i["article_info"]["collect_count"]):
                    maxCollect = [int(i["article_info"]["collect_count"]),i["article_info"]["title"]]

                if maxComment[0] < int(i["article_info"]["comment_count"]):
                    maxComment = [int(i["article_info"]["comment_count"]),i["article_info"]["title"]]

                if maxDigg[0] < int(i["article_info"]["digg_count"]):
                    maxDigg = [int(i["article_info"]["digg_count"]),i["article_info"]["title"]]

                if maxView[0] < int(i["article_info"]["view_count"]):
                    maxView = [int(i["article_info"]["view_count"]),i["article_info"]["title"]]


print("%s,在 %s 到 %s 间,你一共写了%d篇文章,阅读量为:%d,点赞量为:%d,留言量为:%d,收藏量为: %d" %(userName,timeStart,timeEnd,count,view_count,digg_count,comment_count,collect_count))
print("分别统计信息为:")
print("阅读量最高的文章是:《%s》,阅读量为:%d" %(maxView[1],maxView[0]))
print("点赞量最高的文章是:《%s》,点赞量为:%d" %(maxDigg[1],maxDigg[0]))
print("留言量最高的文章是:《%s》,留言量为:%d" %(maxComment[1],maxComment[0]))
print("收藏量最高的文章是:《%s》,收藏量为:%d" %(maxCollect[1],maxCollect[0]))

在上述代码中,我们仅需要修改timeStarttimeEnd参数,即可运行代码,得到完整的数据,例如,查询小弟2023年掘金的写作情况,如下:

总结

本人纯python小白,混吃屌丝运维,基础非常差,不会写爬虫,如果阁下会写爬虫的话,可以将数据写入到文件files.txt中,这样的话,就避免了利用浏览器进行数据的收集工作了。但是,利用浏览器调试工具收集数据,其实也不是很慢。一个人一年才写多少文章啊,一个请求中会包含10篇文章,就算3天写一篇文章,那也就是10个请求的事情。

哦,对了,最后希望本篇文章提及的寥寥数行代码可以为你今年在掘金写作画上一个句号,不管它是否是完美的,并且提醒自己,明年继续加油。

相关推荐
小鹿( ﹡ˆoˆ﹡ )1 分钟前
Matplotlib 绘图艺术:从新手到高手的全面指南
python·matplotlib
小鹿( ﹡ˆoˆ﹡ )4 分钟前
深入探索 Seaborn:高级绘图的艺术与实践
python·信息可视化
hummhumm4 分钟前
Oracle 第29章:Oracle数据库未来展望
java·开发语言·数据库·python·sql·oracle·database
聪明的墨菲特i13 分钟前
Django前后端分离基本流程
后端·python·django·web3
工业3D_大熊19 分钟前
【虚拟仿真】CEETRON SDK在船舶流体与结构仿真中的应用解读
java·python·科技·信息可视化·c#·制造·虚拟现实
SEEONTIME28 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
Bearnaise28 分钟前
PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)
论文阅读·笔记·python·深度学习·机器学习·计算机视觉·3d
哇咔咔哇咔1 小时前
【科普】conda、virtualenv, venv分别是什么?它们之间有什么区别?
python·conda·virtualenv
CSXB991 小时前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具
亚图跨际2 小时前
MATLAB和Python及R潜变量模型和降维
python·matlab·r语言·生物学·潜变量模型