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个请求的事情。

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

相关推荐
EterNity_TiMe_1 分钟前
【机器学习】智驭未来:探索机器学习在食品生产中的革新之路
人工智能·python·机器学习·性能优化·学习方法
Mopes__39 分钟前
Python | Leetcode Python题解之第452题用最少数量的箭引爆气球
python·leetcode·题解
AI视觉网奇1 小时前
pymeshlab 学习笔记
开发语言·python
纪伊路上盛名在1 小时前
如何初步部署自己的服务器,达到生信分析的及格线
linux·运维·服务器·python·学习·r语言·github
计算机源码社1 小时前
分享一个餐饮连锁店点餐系统 餐馆食材采购系统Java、python、php三个版本(源码、调试、LW、开题、PPT)
java·python·php·毕业设计项目·计算机课程设计·计算机毕业设计源码·计算机毕业设计选题
汤兰月1 小时前
Python中的观察者模式:从基础到实战
开发语言·python·观察者模式
西柚与蓝莓3 小时前
【开源开放体系总结】
python
belldeep6 小时前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
FreakStudio9 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21369 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python