Archer Han
← 全部作品

归档器

把订阅源的全文抓下来存成本地文件,不依赖任何在线服务

归档器一次运行的终端输出
一次真实的运行记录,省略了中间过程的输出。

为什么做

我订的源有四十多个。早年存下来的链接,现在一半已经打不开了。

一开始我用的是现成的稍后读服务,用了两年,服务关掉了,导出来的文件只有标题,正文全没了。那之后我就想明白一件事:只要东西存在别人的服务器上,它就不算我的。

所以这个工具只做一件事——把全文抓下来,连同正文、图片地址和原始链接,一起写成本地文件。它不需要登录,不需要联网校验,断网也打得开。

关键的取舍

不做全文检索。 中间版本里我塞过一个索引,后来发现用系统自带的文件搜索就够了。四十个源的量根本用不上专门的索引,少一个依赖就少一处会坏的地方。

失败就跳过,不重试。 抓不到就记一行,下次再跑。全流程重试会让一次运行从一分钟拖到十分钟,而绝大多数失败是站点本身的问题,重试也一样没用。

只有摘要的那些也留下。 我本来想直接跳过,后来发现哪怕是摘要也比什么都没有强——一年后回头看,摘要至少能让我想起来当时为什么存它。

存原始 HTML,不只存纯文本。 文件大一倍,但十年后我还能重新提取。纯文本是此刻的我的判断,HTML 是原文。

现在

每天凌晨跑一次,已经连着跑了九百多天。库里大概四万篇,占 11 GB。

失败率在 2% 上下,集中在几个反爬比较凶的站点。我一直没去处理,因为剩下的 98% 够用了。

回头看

动手的时候我以为最麻烦的是抓取,其实最难的是去重——同一篇文章在十个源里出现,标题可能都不一样。最后我用的是链接加正文前 200 字的哈希,很土,但这三年没出过问题。

如果再写一次,我会把源配置和抓取逻辑拆开。现在它们混在一个文件里,加一个源要改代码,这是当时图省事留下的债。

Go · 单文件二进制 · 没有数据库依赖 · 源码不公开