处理某些目录网页不能被calibre解析的方法

来源:互联网 发布:有哪些动画培训班知乎 编辑:程序博客网 时间:2024/05/24 07:36

  编写calibre的recipe脚本,来下载并制作电子书是一个很方便而适用的好方法。但有的时候也会让你觉得郁闷的要命。面对一个书的目录页面,无论你如何修改recipe程序,calibre就是无法正确地解析页面,形成下载的种子。

  仔细分析后发现,这些页面多数都是有一些特殊的字符或者处理办法,目的就是干扰使用程序自动下载图书。页面是在网站上的,我们无法进行修改和处理。那么是不是就没有办法还下载了呢?

  “山不过来我过去”,反正我只是为了下载电子书的内容,何不把目录页面下载到本地,直接读本地文件,生成feed呢。下载到本地的目录页面文件尽可以按我们的要求进行修改,保证calibre的解析正确,能够生成正确的feed,方便calibre进行下载。而修改一个目录页面的工作量不是很大,只要知道一点html语法,很容易就可以实现。

  经过几次尝试,发现这个办法非常成功,只要在index_to_soup方法中把url写成file:///加上自己保存目录页面的路径和文件名。其实如果你不知道如何写的话,直接用浏览器打开这个文件,然后把地址栏的内容复制,粘贴到index_to_soup中url的位置,当然引号是不能少的。这样就没有任何问题了。原来index_to_soup中是仿浏览器来下载和分析目录页面,生成beatifulsoup结构的,所以浏览器能正确打开,calibre也就可以了。其它的编写方法可以不用任何修改。下载到本地的页面文件你尽可以自己进行整理和修改,保证不再有那些干扰的内容,还可以去掉那些多余的章节(许多时候都会有一些冗余的章节,或者广告章节,尽可以直接从页面中删除)。

  事实上,这个办法不仅可以对付那些有干扰内容的页面,如果 你会一点基地的页面html语法,还可以自己写一个所谓目录页面,把不同网页、不同网站的内容都写在一个文件中,这样,你还可以通过用calibre下载来自己制作一本混合了许多网站内容的“合集”电子书。当然,这时每个网站“书籍内容”页面的过滤设定都有是一样的,即keep_tag和remove_tag对每个网站都是一样的,尤其是keep_tag,如果设置不当,可能就过滤掉了一些网站的见容页了,在生成的电子中,这些章节的内容为空。为了保险起见,建议keep_tag不设置,remove_tag可以设置,如果不存在相应的tag,是不起作用的,存在的话就会被过滤掉。

  同样,你也可以指定一个本地的图片文件为书籍的封面,只要把封面的url同样处理就可以。

  当然,如果你不怕麻烦,也可以直接把每篇文章的标题和url直接写进recipe中的feeds,不过这样太麻烦,而且不太好修改,不如放入一个目录页面文件中方便了。想怎么修改就怎么修改,不再需要修改recipe文件了,也很灵活。

  我已经用这种方法制作了不少epub电子书了,合集也有不少。希望这个方法对大家也有用。

0 0
原创粉丝点击