Zhen

用 Calibre 把有趣的博客历史文章转换成电子书

2022-12-02

偶尔在网上会碰到有意思的个人博客,欣喜之余第一件事情便是寻找 RSS 链接添加到 miniflux 订阅中,但是对于历史文章怎么解决呢?毕竟 RSS 阅读器一般只会抓取最近几十条。正常情况下,我是一般会翻上个几页看看,把感兴趣的添加到 Instapaper 等服务中稍后阅读,或者直接把网页保存到方便的地方,有空的时候在手机上用浏览器翻阅。但是对于历史文章多的博客,这么操作总会遗漏可能感兴趣的文章。最近又遇到这个问题,便准备找方案将历史博文打包成电子书放到 Kindle 上阅读。依稀记得很久之前看到过类似的需求,但是没有找到,搜索后发现找到的大部分方案都是基于 Calibre 的新闻抓取功能。

Calibre 是知名的电子书管理软件,且有抓取新闻的功能,自带了不少新闻网站,还可以添加自定义的新闻来源。正是利用其自定义新闻来源的功能,我们可以添加自己的 Python 脚本,在 Calibre 中称为 recipe,进去文章的抓取并制作成 mobi 格式的电子书,之后需要 epub 直接利用 Calibre 强大的转换功能即可。

Recipe 的编写主要是编写继承自 BasicNewsRecipe 的类,主要需要修改的函数为 parse_index(),该函数抓取索引页,返回文章的名称及链接,这里用到的主要是 BeautifulSoup 这个类,观察分析网站源码的 html 结构即可自定义出自己需要的 recipe。我将自己抓的两个博客使用的 recipe 放到 Github 上的 blog-to-ebook 仓库了,有兴趣可以参考修改使用。为了方便调试,在上面的代码仓库中还有不依赖 Calibre 函数库的测试文件 test.recipe.py

下面的参考链接包括 Calibre 的文档和 recipe 继承类的源代码,以及其他相关文章,供参考。相似项目是 Github 上其他 recipe 的仓库。

参考链接

相似项目


Content