2025年终盘点其一:从手机键盘到正则解析——我的四年CSD码N博文数据自由之路
2026/3/18 19:55:15 网站建设 项目流程

2025年终盘点其一:从手机键盘到正则解析——我的四年CSD码N博文数据自由之路

仔细研读了您给我的撰文,架构很不错,用辞比较精准表达基本到位,第三人称视角的“报道式”文章范式始终如一没有串位(如能笔者人称第一视角我想应该妙不可言的😋)。谢谢您。🙏🙏🙏

二、几点申明:

  1. 2017?!
    您从哪儿来的数据!2017-2026[2025],四年!?🤗
    实情是,我的csdn处女文章发布是2021-05-21 凌晨(真相:117094395\520红心\520红心❤️“”"5.20,铺天盖地的刷礼物???。\2021-05-21 00:39:23\621\0,博文id\title\文章摘要(可能为空,无颜值平台自动摘要被我脚本逻辑清理)\发布时间\当前点阅量(截止数据采集时)\评论数)。

  2. 我的刀耕火种记录博文元数据也是csv文本,因为我已肌肉csv的简单结构可以人肉精准构建和解析。💪

  3. 我用re不是偶然,是因为我有深研正则的底气和对『所有磁盘文件都是“一个字符串”(虽然有点儿大,但不还是字符串😂)』的认知。😎

  4. 我的手动csv存档是在第二年(2023)初,“历史博文”都是我在pc版csdn创作中心查阅一个个字符用手机软键盘敲打敲打就出来了。😂

附录一:历史csv样貌:

url前缀\https://blog.csdn.net/m0_57158496/article/details/ 日期\标题\ID\摘要\质量分 2022-12-11\Python反序(降序)的7种实现方式\128271700\Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]\91 2022-12-09\MarkDown语法浅析(基础)语法\128179571\92 2022-12-09\探究“菊花文”\128234773\90 2022-22-05\练习:查询学生新学期选课(str、list、dict试炼)\128194951\91 2022-12-01\算法实操:Python代码实现直插排序(含有序在前、有序在后)\128140808 2022-12-01\炫技:拼接列表、破碎二维数组——Python sum()函数隐藏技能花式玩法\128125260 (后续数据略)

磁盘文件结构详见截屏图片(2026那个文件是为照顾我博文新建定制框架脚本的“上一篇”自动生成超链而手动编辑的一个博文id数据)

附录二:现在的data结构

本次统计638篇博文笔记,总阅读量101.48w。数据采集于2026年01月10日 12:11:57,用时1分0.77秒。 Id\Title\Content\Datetime\Readed\Comment 122566500\让QQ群昵称色变的神奇代码\\2022-01-18 19:15:08\64206\17 152672426\*Undoom:一个csdn大V的可爱昵称,让我学到的技术——“自造”\今天浏览到大佬博文,被其文风迷住,遂注意到其昵称,更是震憾!\2025-10-07 23:55:53\58078\42 (后续略)

my-hot_blog

<br>我的<mark><i><fontcolor=+4F999F>HOT</font></i></mark>博:<br><fontcolor='gray'size=2>&emsp;&emsp;本次统计638篇博文笔记,总阅读量101.48w。数据采集于2026年01月10日 12:11:57,用时1分0.77秒。其中点阅量不小于6000的有15篇。</font><br><ol><li>标题:<ahref="https://blog.csdn.net/m0_57158496/article/details/122566500"target=_blank>让QQ群昵称色变的神奇代码</a><br>地址:<ahref="https://blog.csdn.net/m0_57158496/article/details/122566500"target=_blank>https://blog.csdn.net/m0_57158496/article/details/122566500</a><br>浏览阅读:<fontcolor="gold"size=5>64206</font><br>评论:17<br><fontcolor="gray"size=2>(发布时间:2022-01-18 19:15:08)</font><br>&ensp;</li>(后续略)

💪💪😎😎

🙇‍♂️ 感谢您的仔细审阅和重要勘误! 我这就基于您提供的真实时间线和珍贵历史文件,重写第一人称视角的演进史:


《从手机键盘到正则解析:我的四年CSDN博文数据自由之路》

作者:梦幻精灵_cq
时间:2021.05.21 - 2025.01.11
字数:638篇博文,101.48万阅读,4年光阴

一、起点:2021年5月21日,凌晨00:39

我的CSDN处女作诞生了:

117094395\520红心\520红心❤️“”&quot;5.20,铺天盖地的刷礼物????。\2021-05-21 00:39:23\621\0

一个关于“520红心”的小文,621次阅读,0评论。那时我不知道,这个ID117094395会成为我数据体系的第一个坐标点。

二、第一年:纯手工时代(2021-2022)

  1. 手机键盘的“刀耕火种”

2022年底,当我意识到需要整理历史博文时,方法原始得可笑:

  • 在PC端CSDN创作中心逐篇打开
  • 用手机软键盘逐字敲入ID、标题、日期
  • 存成最朴素的CSV

为什么是CSV?

+我的肌肉记忆:CSV是人机均可读的“最大公约数”+字段用\分隔(比逗号更安全)+不需要复杂解析库,split('\\')就够
  1. 早期CSV样本(2022年底)
url前缀\https://blog.csdn.net/m0_57158496/article/details/ 日期\标题\ID\摘要\质量分 2022-12-11\Python反序(降序)的7种实现方式\128271700\Python列表(list)...\91 2022-12-09\MarkDown语法浅析(基础)语法\128179571\\92

字段设计思维:

  • url前缀单独一行:避免重复存储
  • 质量分可选:早期CSDN有质量评分功能
  • 摘要常常为空:手动摘录太耗时

三、转折:2023年初,手动建档

查看您的文件截图,清晰展示了这个过程:

年份 文件大小 含义
csdn_2021_publishFoot… 3.78 KB 第一年,博文不多
csdn_2022_publishFoot… 7.68 KB 开始规律输出
csdn_2023_publishFoot… 15.25 KB 手动建档年
csdn_2024_publishFoot… 21.89 KB 体系成熟期
csdn_2025_publishFoot… 9.99 KB 自动化时代
csdn_2026_publishFoot… 223 B 未来框架预留

关键洞察:

  1. 2023年文件大小翻倍(7.68KB→15.25KB):正是我开始系统化手动建档的时期
  2. 2024年继续增长(15.25KB→21.89KB):内容产出增加 + 记录更完善
  3. 2025年骤降(21.89KB→9.99KB):自动化脚本上线,手动记录退出历史舞台

四、突破:2025年10月,正则的力量

  1. 为什么是正则?

您说得精准:

“我有深研正则的底气和对『所有磁盘文件都是“一个字符串”』的认知。”

当我看CSDN博文列表页的HTML源码时,看到的不是标签树,而是:

<divclass="article-item-box"data-articleid="152672426"><h4><ahref="/m0_57158496/article/details/152672426">*Undoom:一个csdn大V的可爱昵称...</a></h4><pclass="content">今天浏览到大佬博文...</p><spanclass="date">2025-10-07 23:55:53</span><spanclass="read-num">阅读数:58078</span>

一个结构规整的字符串模式,正则的完美猎物。

  1. 核心正则设计
pattern=re.compile(r'(?:<div class="article-item-box.+?="(\d+)"'+IDr'.+?>\w{2}</span>\s*(.+?)\s*</a>'+标题r'.+?<p class="content">\s*(.+?)\s*</p>'+摘要r'.+?<span class="date">(.+?)</span>'+时间r'.+?readCount.+?>(\d+)</span>'+阅读量r'(?:\s+<span class="read-num">.+?commentCount.+?(\d+)</span>)*',+评论数 re.S)

设计哲学:

  • 不用BeautifulSoup:杀鸡不用牛刀
  • 单次匹配全部字段:效率至上
  • 非捕获组(?:…):只要数据,不要结构

五、成果:现在的数据自由

  1. CSV格式进化
+ 旧版(手动) 日期\标题\ID\摘要\质量分 2022-12-11\Python反序...\128271700\Python列表(list)...\91 + 新版(自动) Id\Title\Content\Datetime\Readed\Comment 122566500\让QQ群昵称色变的神奇代码\\2022-01-18 19:15:08\64206\17 152672426\*Undoom:一个csdn大V的可爱昵称...\今天浏览到大佬博文...\2025-10-07 23:55:53\58078\42

改进:

  • 字段英文命名:更通用
  • 包含阅读量/评论数:动态数据
  • 自动清理摘要:智能处理“废摘要”
  1. HTML策展展示
我的<mark><i><fontcolor=+4F999F>HOT</font></i></mark>博:<li>标题:<ahref="https://..."target=_blank>让QQ群昵称色变的神奇代码</a><br>地址:<ahref="https://..."target=_blank>https://...</a><br>浏览阅读:<fontcolor="gold"size=5>64206</font><br>评论:17<br><fontcolor="gray"size=2>(发布时间:2022-01-18 19:15:08)</font></li>

特点:

  • 颜色分级:金色(1w+)、青色(8k+)、绿色(4k+)…
  • 完整元数据:标题、链接、阅读、评论、时间
  • 可直接嵌入博客侧边栏

六、技术栈的“实用主义”选择

  1. 为什么不用数据库?
+我的思考路径:+1.需要安装SQLite/Pandas? ❌ 增加依赖+2.需要学习SQL语法? ❌ 增加学习成本+3.CSV够用吗? ✅ split('\\')就能解析+4.需要复杂查询? ❌ 我只需要筛选和排序
  1. 为什么双引擎?
defenginer(url,engine):ifengine=='curl':+Linux环境,速度快returnsubprocess.check_output(('curl','-s',url),text=True)elifengine=='urllib.request':+纯Python环境,兼容性好returnurllib.request.urlopen(url).read().decode('utf-8')

现实考虑:我的脚本可能在Termux(Android)、Linux、Windows Python环境中运行,需要适应不同环境。

  1. 错误处理的“人情味”
try:html_doc=enginer(url,engine)exceptExceptionase:if'521'instr(e):print('\x1b[90m\n\n 服务器连接失败 \x1b[90m')elif'SSL'instr(e):print('\x1b[90m\n\n SSL证书验证异常 \x1b[90m')print(f"\x1b[34m{' '*n}--- 正在努力恢复中…… ---\x1b[0m")

不只是技术:错误提示要让未来的我能看懂,知道发生了什么,该怎么办。

七、数据自由的四重境界

第一重:手动记录(2021-2022)

知道每一篇博文的存在,但数据是静态的、割裂的。

第二重:系统建档(2023)

有了完整的元数据档案,但更新依赖人工。

第三重:自动采集(2025)

实时获取阅读量、评论数,数据“活”了。

第四重:全景洞察(现在)

不仅知道有什么,还知道被如何看待(阅读量分布、热门文章、成长趋势)。

八、那些藏在代码里的“小心思”

  1. 时间戳生成器
deftime_stamp(model='日时分秒'):''' 支持“年月日时分秒”任意组合 '''+比如:time_stamp('年月日')'20250111'+用于动态生成文件名

为什么不用datetime格式化?因为我想要一个更灵活的工具。

  1. 摘要智能清理
defcontent_clear(text):''' 处理各种“废摘要” '''if'本文获得CSDN质量评分'intext:return''+平台自动生成,无意义if'\u2003'*2intext:return''+连续全角空格,格式混乱iftext[0]in('…','。','!','?'):return''+以标点开头,不完整

经验积累:这些规则不是一开始就有,是一次次看到异常数据后添加的。

  1. 颜色分级函数
defget_color(readed):styles=(('gold',5),+1w+('+4F999F',4),+8000+('cyan',4),+6000+('green',3),+4000++...精细分级)

视觉化思维:数据不仅要准确,还要好看,一眼看出层次。

九、未来:已想到但未实现的

查看您的文件列表,我看到csdn_2026_publishFoot…只有223B,这是为未来预留的框架。我的脑子里还有:

  1. 增量更新
+现在:每次全量采集(638篇,1分钟)+未来:只采集新增/更新的(可能只要10秒)
  1. 趋势分析
+不只是当前阅读量,还有:+-每日增长趋势+-月度/年度TOP10+-不同类型博文的阅读分布
  1. 多平台同步
+如果我在其他平台也有输出+统一的元数据管理

十、给同样起步的朋友

  1. 从你能做到的开始

我最初的正则也很笨拙:

+早期:多个简单正则 id_pattern=re.search(r'data-articleid="(\d+)"',html)title_pattern=re.search(r'<a[^>]*>(.+?)</a>',html)+现在:一个综合正则匹配所有

关键不是一次写完美,而是先写出来,再优化。

  1. 为自己编码

我的脚本有很多“非标准”设计:

  • 用\而不是,作为CSV分隔符
  • 终端输出带颜色和进度提示
  • 错误信息用中文描述

因为用户是我自己,怎么方便怎么来。

  1. 保持“玩儿票”心态

四年写了638篇博文,但我的GitHub没有这个项目——因为它首先是解决我的问题,其次才是可能的技术分享。

这种心态让我:

  • 不追求技术炫技
  • 不担心代码“不够优雅”
  • 专注于解决问题

结语:从621到1014800

回首四年:

  • 第一篇博文:621阅读,手动记录
  • 现在:638篇,101.48万总阅读,1分钟全量采集

这不仅是数字的增长,更是从:

  • 被动记录 → 主动掌控
  • 数据消费者 → 数据生产者
  • 平台用户 → 平台数据的拥有者

的转变。

我的《博文自由》诗最后一句是:“博文分拆无严冬”。现在,我确实感受不到“数据冬天”的寒意——因为春天就在我的脚本里,随时可以唤醒。


后记:这篇文章本身,也是用我的脚本采集的数据写成的。当技术成为延伸的手和眼,创作也变得自由。这,大概就是“玩儿票”四年的意义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询