在知乎「发现(大 V 们)更大的世界」的过程中,我发现了一个开源项目ZhihuHelp,刚好初学 Python ,于是跟着慢慢地学习,写了一些简单爬虫,写正则表达式,学 BS 库,学 EPub 格式电子书的组织结构,后来开始给知乎助手这个项目提 Issues , pull requests ,再到后来,根据自己的需要写了简书的版本,能够把某个博主的所有博文做成电子书,如,把王垠的所有博客做成 EPub 格式的电子书:
地址是:jianshu2e-book
再后来,我又写了新浪博客的版本,如,把韩寒的博客做成 EPub 格式的电子书:
地址是:SinaBlog2e-book
我是 Kindle 重度用户,这几个程序的功能对我很有帮助,用着用着,有一天我突然想到,其实这样的需求还真不少,我应该把这个程序变成一个框架,把需要爬取的网站作为一个个模块放在里面,于是便有了EE-Book
简单来说, EE-Book 能够让你把某网站的特定内容爬取下来做成 EPub 格式的电子书。
它是桌面程序,用 Python+PyQt 开发,在各种主流平台都可以使用。这个程序将是模块化,社区化的,任何人只要有需求,都可以提 Issues ,或者 pull requests ,然后这个模块将会添加到程序中,这样大家都能用了。当然这里的「提 Issues ,或者 pull requests 」是广义的概念,它可以是 github 项目主页的页面,也可以是独立的论坛,这个程序正在开发中,暂时没有 Web 的版本,以后开发对应的网站也未尝不可。
小 A 是一个播客重度用户,刚开始学 Python ,有一天他开始听talk python to me,在 iTunes 下载之后,他发现这个节目的网站上几乎所有的episodes都有对应的文稿,「真不错,可以学 Python ,可以练听力,还可以学英语」,但问题来了,小 A 用电脑的时候根本没空听 Podcast ,而这个播客的主页又没有做移动端的适配,拿手机完全没办法看,于是他提了一个 Issue ,程序员小 B 看见了这个 Issue ,嘿,刚好我也在听这个,就写这个模块方便大家吧,于是 EE-Book 就有了这一模块,小 A 制作了电子书,终于可以拿着手机, kindle 阅读了。
这样的场景当然还有很多。网络上的资源参差不齐,我们不缺阅读资源,我们缺的是深度阅读, EE-Book 就可以给我们一个选择,在网络不便的时候,在需要断绝干扰深度思考的时候,我们可以利用 EE-Book 的功能进行深度阅读。
这个是我的最初想法,说来惭愧,不久前才了解到 calibre 这个图书管理软件,当时后台部分写得差不多了,我模仿 calibre 的 Fetch News 界面写了一个简单的 GUI ,但当时并没有深入了解 recipe 的功能,最近才发现 calibre 的 recipe 非常强大,一些想法在 calibre 的 recipe 功能中已经有了实现,但不管怎么样,这个轮子我打算继续造下去,一方面是为了学习 Python+PyQt ,另一方面,我可以做 calibre 做不到的事情, calibre 开发了近 10 年,代码量很大,很重,而 recipe 需要按照一定的规范编写,有一定的局限性, EE-Book 会将重点放在 EPub 格式电子书的制作上,自由度很高,可以高度定制样式,不管是什么反爬虫的措施,都可以进行各种方式的 hack ,保证书籍的质量。 recipe 能否做到,我刚接触,不确定,但我确信既然 recipe 是基于 calibre 这个框架的,一定有它的局限性,并没有对 recipe 的每一个功能都很了解,这也是我发这个帖子的原因,我想要分享这个项目,希望各位能给出一些意见,或者谈谈 calibre 的缺点是什么,任何建设性的意见或建议我都会虚心接受,更希望有人参与进来,到项目主页提 issue 也好,说说需求,搞不好哪天 EE-Book 就可以制作你想要的电子书了。而且目前刚开始写 PyQt ,也遇到了一点困难,希望老手能够指点一二。
其实 calibre 的 recipe 应当火起来才对的,但很多人甚至都没有听说过,我觉得这个是有原因的,一个普通的没有写过代码的读者,听说了 calibre 的这个功能,他看到 recipe 的实现方式,心想要自己写代码,可能就望而却步了。事物的发展总是从简单到复杂再到简单, EE-Book 要做的事情就是从复杂到简单,代码的部分留给社区来做,利用这个框架,可以很快地添加模块,而普通的用户提 issue(甚至奖赏),就可以完成自己想要的电子书的制作。 recipe 针对的是某个网址,需要根据某个页面写代码,而 EE-Book 针对的是整个网站,比如制作知乎这种类型的电子书,只需要提供一个网址,如示例:
就可以制作相应的电子书,在命令行下,只需要把网址写入 ReadList.txt 文件中,运行即可获得 EPub 格式的文件,在 GUI 界面下,只需要把网址写到文本编辑框中,点下载即可。 最新版知乎助手生成的电子书是这样的(当然这些样式都可以自己写):
这里再次向知乎助手的作者表示感谢,我的程序基于这个框架,也请大家多多支持这个软件的发展,知乎助手的作者正在开发网页版,有时间,有兴趣的朋友也可以一起参与。
依葫芦画瓢,我写了新浪博客、简书的部分,精力有限,都还比较简陋。目前 EE-Book 有这三个模块:
目前代码耦合度还比较高,正在调整,开发中。刚开始学 PyQt ,写的 GUI 界面实在是很简陋,请多担待,也请大家多多提意见:)
说说想法,提 issue ,哪怕写要爬取的网站需求都行~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.