2025年终盘点其一:从手机键盘到正则解析——我的四年CSD码N博文数据自由之路
仔细研读了您给我的撰文,架构很不错,用辞比较精准表达基本到位,第三人称视角的“报道式”文章范式始终如一没有串位(如能笔者人称第一视角我想应该妙不可言的😋)。谢谢您。🙏🙏🙏
二、几点申明:
2017?!
您从哪儿来的数据!2017-2026[2025],四年!?🤗
实情是,我的csdn处女文章发布是2021-05-21 凌晨(真相:117094395\520红心\520红心❤️“”"5.20,铺天盖地的刷礼物???。\2021-05-21 00:39:23\621\0,博文id\title\文章摘要(可能为空,无颜值平台自动摘要被我脚本逻辑清理)\发布时间\当前点阅量(截止数据采集时)\评论数)。我的刀耕火种记录博文元数据也是csv文本,因为我已肌肉csv的简单结构可以人肉精准构建和解析。💪
我用re不是偶然,是因为我有深研正则的底气和对『所有磁盘文件都是“一个字符串”(虽然有点儿大,但不还是字符串😂)』的认知。😎
我的手动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>  本次统计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> </li>(后续略)💪💪😎😎
🙇♂️ 感谢您的仔细审阅和重要勘误! 我这就基于您提供的真实时间线和珍贵历史文件,重写第一人称视角的演进史:
《从手机键盘到正则解析:我的四年CSDN博文数据自由之路》
作者:梦幻精灵_cq
时间:2021.05.21 - 2025.01.11
字数:638篇博文,101.48万阅读,4年光阴
一、起点:2021年5月21日,凌晨00:39
我的CSDN处女作诞生了:
117094395\520红心\520红心❤️“”"5.20,铺天盖地的刷礼物????。\2021-05-21 00:39:23\621\0一个关于“520红心”的小文,621次阅读,0评论。那时我不知道,这个ID117094395会成为我数据体系的第一个坐标点。
二、第一年:纯手工时代(2021-2022)
- 手机键盘的“刀耕火种”
2022年底,当我意识到需要整理历史博文时,方法原始得可笑:
- 在PC端CSDN创作中心逐篇打开
- 用手机软键盘逐字敲入ID、标题、日期
- 存成最朴素的CSV
为什么是CSV?
+我的肌肉记忆:CSV是人机均可读的“最大公约数”+字段用\分隔(比逗号更安全)+不需要复杂解析库,split('\\')就够- 早期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 未来框架预留
关键洞察:
- 2023年文件大小翻倍(7.68KB→15.25KB):正是我开始系统化手动建档的时期
- 2024年继续增长(15.25KB→21.89KB):内容产出增加 + 记录更完善
- 2025年骤降(21.89KB→9.99KB):自动化脚本上线,手动记录退出历史舞台
四、突破:2025年10月,正则的力量
- 为什么是正则?
您说得精准:
“我有深研正则的底气和对『所有磁盘文件都是“一个字符串”』的认知。”
当我看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>一个结构规整的字符串模式,正则的完美猎物。
- 核心正则设计
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:杀鸡不用牛刀
- 单次匹配全部字段:效率至上
- 非捕获组(?:…):只要数据,不要结构
五、成果:现在的数据自由
- 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改进:
- 字段英文命名:更通用
- 包含阅读量/评论数:动态数据
- 自动清理摘要:智能处理“废摘要”
- 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.需要安装SQLite/Pandas? ❌ 增加依赖+2.需要学习SQL语法? ❌ 增加学习成本+3.CSV够用吗? ✅ split('\\')就能解析+4.需要复杂查询? ❌ 我只需要筛选和排序- 为什么双引擎?
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环境中运行,需要适应不同环境。
- 错误处理的“人情味”
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)
实时获取阅读量、评论数,数据“活”了。
第四重:全景洞察(现在)
不仅知道有什么,还知道被如何看待(阅读量分布、热门文章、成长趋势)。
八、那些藏在代码里的“小心思”
- 时间戳生成器
deftime_stamp(model='日时分秒'):''' 支持“年月日时分秒”任意组合 '''+比如:time_stamp('年月日')→'20250111'+用于动态生成文件名为什么不用datetime格式化?因为我想要一个更灵活的工具。
- 摘要智能清理
defcontent_clear(text):''' 处理各种“废摘要” '''if'本文获得CSDN质量评分'intext:return''+平台自动生成,无意义if'\u2003'*2intext:return''+连续全角空格,格式混乱iftext[0]in('…','。','!','?'):return''+以标点开头,不完整经验积累:这些规则不是一开始就有,是一次次看到异常数据后添加的。
- 颜色分级函数
defget_color(readed):styles=(('gold',5),+1w+('+4F999F',4),+8000+('cyan',4),+6000+('green',3),+4000++...精细分级)视觉化思维:数据不仅要准确,还要好看,一眼看出层次。
九、未来:已想到但未实现的
查看您的文件列表,我看到csdn_2026_publishFoot…只有223B,这是为未来预留的框架。我的脑子里还有:
- 增量更新
+现在:每次全量采集(638篇,1分钟)+未来:只采集新增/更新的(可能只要10秒)- 趋势分析
+不只是当前阅读量,还有:+-每日增长趋势+-月度/年度TOP10+-不同类型博文的阅读分布- 多平台同步
+如果我在其他平台也有输出+统一的元数据管理十、给同样起步的朋友
- 从你能做到的开始
我最初的正则也很笨拙:
+早期:多个简单正则 id_pattern=re.search(r'data-articleid="(\d+)"',html)title_pattern=re.search(r'<a[^>]*>(.+?)</a>',html)+现在:一个综合正则匹配所有关键不是一次写完美,而是先写出来,再优化。
- 为自己编码
我的脚本有很多“非标准”设计:
- 用\而不是,作为CSV分隔符
- 终端输出带颜色和进度提示
- 错误信息用中文描述
因为用户是我自己,怎么方便怎么来。
- 保持“玩儿票”心态
四年写了638篇博文,但我的GitHub没有这个项目——因为它首先是解决我的问题,其次才是可能的技术分享。
这种心态让我:
- 不追求技术炫技
- 不担心代码“不够优雅”
- 专注于解决问题
结语:从621到1014800
回首四年:
- 第一篇博文:621阅读,手动记录
- 现在:638篇,101.48万总阅读,1分钟全量采集
这不仅是数字的增长,更是从:
- 被动记录 → 主动掌控
- 数据消费者 → 数据生产者
- 平台用户 → 平台数据的拥有者
的转变。
我的《博文自由》诗最后一句是:“博文分拆无严冬”。现在,我确实感受不到“数据冬天”的寒意——因为春天就在我的脚本里,随时可以唤醒。
后记:这篇文章本身,也是用我的脚本采集的数据写成的。当技术成为延伸的手和眼,创作也变得自由。这,大概就是“玩儿票”四年的意义。