利用Python制作文本小说

关于技术的一点探讨

      本人也爱看一些稀奇古怪的小说吧,尤其是偏爱科幻小说,可是正版的条规不愿意花钱,只好在网络上找资源了,这里不得不感叹一下还是国内环境好啊,这些资源都可以找得到,只要肯下力气。本文作为一名Python的铁粉,对于用Python进行网络资源的爬去还是非常熟练的,因此便想到了用Python来爬取网站上的小说,然后制作完成后传到多看上阅读。      
      理想是美好的,现实是残酷的,我历时两天,写出了很多代码,结果仍不能算的是完美,接下来就说一下关于这段经历的具体纠葛。![](http://img3.imgtn.bdimg.com/it/u=640330160,2514427525&fm=23&gp=0.jpg)    
      多看阅读的度数体验确实很好,不过只支持`epub`和`TXT`格式,很让人发愁,`TXT`的电子书读起来一般般,效果不好,``epub``的阅读体验很好,于是便想着自己做一个``epub``电子书,在网上也是看了很多贴子,链接如下:    

http://www.pylist.com/topic/1439197138
http://blog.itpub.net/29733787/viewspace-1477082/
http://www.manuel-strehl.de/dev/simple_epub_ebooks_with_python.en.html

      结果是自己知道了```epub```格式是怎么做出来的,是怎么生成的,看完之后,自己就动手试了,按照人家的源代码,仔细研究,生成了```epub```格式电子书,结果多看不支持,文件有问题,只能说自己还是太菜,我决定还是先放弃,想要生成`epub`格式电子书要寻求第三方库的支持是个不错的选择。结果果然有很多以后的成果,想``mkepub``和`pypub`都是很成熟的作品。安装方法在`github`和各自的主页上都有着写,也是比较简单的。`pip install pypub`和`pip install mkepub`都是可以直接安装的,支持库也比较少。其实生成``epub``文件还是比较容易的,我也能生成,不知道那个支持文件有点问题,我不想再在这个上面耗太多时间,所以就放弃了,如果再来半天时间就差不多了。    

      用第三方库的感觉只能说恶心,不知道是我的问题还是库的问题,总之恶心,FUCK!,首先是`mkepub`库,看完库的简介和API后,用起来那是一个顺手,结果在最关键的地方,也就是add_page上出现了错误,最开始提示gbk无法解码,或者就是无法编码……,![](http://upload-images.jianshu.io/upload_images/960630-34c4e4e7a6ea33a8?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)我一直以为是自己的电脑的编码的问题,但是差了很多的资料和相关博主,结果按照自己的理解和博客的方法都是没办法生成可以用的`epub`文件,当最终不报错了,我以为我成功了,把文件传到iBook和多看上打开,无法使用,把`epub`格式解压后,找到我写入的文件生成的html文件,一直提示页面渲染错误。我开始寻找bug,但是不是专业人才,也不知道html到底哪里的问题,尝试了很多办法,发现当写入的文件时英文时是可以用的,在生成的html文件中我检查页面,发现了lang=en的说明,我就知道我肯定没办法做出来了,这个库支持英文的不支持中文的。无法渲染中文,但是charset=‘utf-8’,我也实在不知道哪里错了。

      至此,我决定换个库,pypub出现在我面前,按照API看完了,然后使用一直提示importerror,FUCK!,![](http://upload-images.jianshu.io/upload_images/960630-7fdfc21d7d0a1b0f.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)然后在github项目主页上,找到了,这个库只支持Python2.。。。。。。。    

我还能说什么呢。我想TXT其实也不是那么难用的吧,然后就是TXT文件的生成了,这个不需要很多步骤,只需要将所有章节的文章从html中解析出来,然后合并到一起就可以了。结果出乎我的所料,由于我之前并没有对章节做重视,结果就是我不知道章节的顺序……,然后只好在最开始的时候加上索引,然后把文件合并生成了TXT文件,到这里其实已经成功了。但是做事情就应该精益求精嘛。我发现再多看里没有办法生成章节目录,好吧,按照其他的小说的模式,发现章节想要生成出来,章节必须独立一行,然后又加上这个步骤,终于是生成了,至此目的达成。

      补充一点,为了防止网站上发小黄书,对于什么“se”、“ri”、“cao”、“sao”、“yin”等都只能用拼音显示,阅读体验太差。另外,从网页上爬下来的,会有很多冗余信息,错误的标点符号都需要处理。我是根据以为大神说的在fmddlmyy贴吧扎到了cnbook软件,进行的处理,不过用Python也可以,自己想偷偷懒,重要的是想赶紧阅读小说了,对文字的处理不知道又要好久……,用前人成果还是快了许多的。    

      总结起来,一是自己的技术有限,没能生成`epub`格式的文件,二是第三方库对于中文的支持还是不太靠谱,还是需要国内做的更好吧,三就是通过这次项目的经历,自己的技术也更加纯熟了,加油!!!    

      人生苦短,我用Python!    

附件:
小说网站:http://www.23us.com/
编码博客:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/
http://www.cnblogs.com/fnng/p/5008884.html
`

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,593评论 6 427
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 18,768评论 4 418
  • 环境管理管理Python版本和环境的工具。p–非常简单的交互式python版本管理工具。pyenv–简单的Pyth...
    MrHamster阅读 3,856评论 1 61
  • 穷人和富人的人脉结构,弱关系竟如此重要 中国人很喜欢讲关系,但我们却并没有真的了解关系,国外的学者,将关系分为两种...
    创一学习吧阅读 409评论 0 0
  • 我的笔记本电脑莫名其妙的就有了三块硬盘在上面,一个固态、一个本机自带的、还有一个就是在光驱的位置加的。因为在光驱位...
    Demons_96阅读 1,993评论 0 3