当前位置: 首页 > news >正文

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

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

二、几点申明:

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样貌:
```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结构
```csv

本次统计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
```html

<br>

我的<mark><i><font color=+4F999F>HOT</font></i></mark>博:
<br><font color='gray' size=2>&emsp;&emsp;本次统计638篇博文笔记,总阅读量101.48w。数据采集于2026年01月10日 12:11:57,用时1分0.77秒。其中点阅量不小于6000的有15篇。</font>

<br>

<ol>
<li>
标题:<a href="https://blog.csdn.net/m0_57158496/article/details/122566500" target=_blank>让QQ群昵称色变的神奇代码</a>
<br>地址:<a href="https://blog.csdn.net/m0_57158496/article/details/122566500" target=_blank>https://blog.csdn.net/m0_57158496/article/details/122566500</a>
<br>浏览阅读:<font color="gold" size=5>64206</font>
<br>评论:17
<br><font color="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处女作诞生了:

```csv
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?

```python
+ 我的肌肉记忆:CSV是人机均可读的“最大公约数”
+ 字段用\分隔(比逗号更安全)
+ 不需要复杂解析库,split('\\')就够
```

2. 早期CSV样本(2022年底)

```csv
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源码时,看到的不是标签树,而是:

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

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

2. 核心正则设计

```python
pattern = re.compile(
r'(?:<div class="article-item-box.+?="(\d+)"' + ID
r'.+?>\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格式进化

```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
```

改进:

+ 字段英文命名:更通用
+ 包含阅读量/评论数:动态数据
+ 自动清理摘要:智能处理“废摘要”

2. HTML策展展示

```html
我的<mark><i><font color=+4F999F>HOT</font></i></mark>博:
<li>
标题:<a href="https://..." target=_blank>让QQ群昵称色变的神奇代码</a>
<br>地址:<a href="https://..." target=_blank>https://...</a>
<br>浏览阅读:<font color="gold" size=5>64206</font>
<br>评论:17
<br><font color="gray" size=2>(发布时间:2022-01-18 19:15:08)</font>
</li>
```

特点:

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

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

1. 为什么不用数据库?

```python
+ 我的思考路径:
+ 1. 需要安装SQLite/Pandas? ❌ 增加依赖
+ 2. 需要学习SQL语法? ❌ 增加学习成本
+ 3. CSV够用吗? ✅ split('\\')就能解析
+ 4. 需要复杂查询? ❌ 我只需要筛选和排序
```

2. 为什么双引擎?

```python
def enginer(url, engine):
if engine == 'curl': + Linux环境,速度快
return subprocess.check_output(('curl', '-s', url), text=True)
elif engine == 'urllib.request': + 纯Python环境,兼容性好
return urllib.request.urlopen(url).read().decode('utf-8')
```

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

3. 错误处理的“人情味”

```python
try:
html_doc = enginer(url, engine)
except Exception as e:
if '521' in str(e):
print('\x1b[90m\n\n 服务器连接失败 \x1b[90m')
elif 'SSL' in str(e):
print('\x1b[90m\n\n SSL证书验证异常 \x1b[90m')
print(f"\x1b[34m{' '*n}--- 正在努力恢复中…… ---\x1b[0m")
```

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

七、数据自由的四重境界

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

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

第二重:系统建档(2023)

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

第三重:自动采集(2025)

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

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

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

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

1. 时间戳生成器

```python
def time_stamp(model='日时分秒'):
''' 支持“年月日时分秒”任意组合 '''
+ 比如:time_stamp('年月日') → '20250111'
+ 用于动态生成文件名
```

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

2. 摘要智能清理

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

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

3. 颜色分级函数

```python
def get_color(readed):
styles = (
('gold', 5), + 1w+
('+4F999F', 4), + 8000+
('cyan', 4), + 6000+
('green', 3), + 4000+
+ ... 精细分级
)
```

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

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

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

1. 增量更新

```python
+ 现在:每次全量采集(638篇,1分钟)
+ 未来:只采集新增/更新的(可能只要10秒)
```

2. 趋势分析

```python
+ 不只是当前阅读量,还有:
+ - 每日增长趋势
+ - 月度/年度TOP10
+ - 不同类型博文的阅读分布
```

3. 多平台同步

```python
+ 如果我在其他平台也有输出
+ 统一的元数据管理
```

十、给同样起步的朋友

1. 从你能做到的开始

我最初的正则也很笨拙:

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

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

2. 为自己编码

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

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

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

3. 保持“玩儿票”心态

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

这种心态让我:

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

结语:从621到1014800

回首四年:

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

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

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

的转变。

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

---

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

http://www.jsqmd.com/news/231117/

相关文章:

  • 市场快评 · 今日复盘20260111
  • AI原生应用领域个性化定制的未来趋势
  • 深度测评9个AI论文平台,本科生轻松搞定毕业论文!
  • 大数据安全运维:日常监控与应急响应策略
  • 技术进步对程序员职业的影响
  • 圆上某一段弧的中点坐标求法
  • 导师严选2026 AI论文网站TOP8:本科生毕业论文写作全测评
  • 艺术疗愈促进非语言沟通的系统性解析——从神经生物学到现象学:解锁无言心声的深度路径
  • Spec-Driven Development (SDD) 框架与开源 AI 智能体-意图的进化
  • 从自创生到现象意识的本体论构建
  • 基于Doris的实时数据仓库建设:从理论到实践的完整指南
  • 写真提示词完全指南:从棚拍到情绪大片,AI帮你一键生成
  • 「1+3 架构驱动」OoderAI 企业级解决方案:破解 AI 落地三大痛点,实现能力可控、交互智能与代码一致
  • Gemini认证概述
  • ConcurrentHashMap的并发度是什么?
  • 通信原理篇---连续谱和离散谱
  • 2026,羽绒服不再“围攻波司登”
  • 救命神器!8款AI论文平台测评:本科生毕业论文救星
  • 论文初稿AI率高很正常,教你怎么改到达标
  • 降AI率后论文质量会变差吗?真相是这样的
  • 【Python毕设推荐】基于Hadoop+Spark的健康保险数据可视化分析系统 毕业设计 选题推荐 毕设选题 数据分析
  • 从SOA到微服务:HR智能助手架构演进
  • 研究生论文AI检测不过怎么办?学长经验分享
  • 华为OD机试真题双机位C卷 【完美走位】C语言实现
  • 论文AI率99%还有救吗?别放弃,这样改
  • AIGC检测原理解析:知己知彼才能百战百胜
  • 吐血推荐10个AI论文软件,助你轻松搞定本科生毕业论文!
  • 7 款 AI 论文写作工具,轻松满足格式要求并兼容 LaTeX 模板
  • 论文降AI率要花多少钱?省钱攻略分享
  • 论文查重变得简单高效,8款AI工具助你快速降重优化