学习新的东西不少类似
https://flutter.cn/docs
https://dart.cn/guides
这样的网址上面不少文档要读,当你需要不在电脑面前时候阅读,最好的东西还是kindle,这个工具可以帮你完成这个想法,虽然可能不是那么的通用,毕竟每个网页都不一样,但是有一点点会找规律的技巧就行了。不会太复杂,也就是根据你想要的网页,查看source code 找到几个key words ,当作参数就好了。
先看看效果。 网站页面
真机页面
kindle截图
mobi格式里面包含了网站图片,所以文件还是比较大的。
调用的代码如下。
如果不是特别特殊的文件,基本上 上面三行就可以解决问题。 继承与DocsParser的类名随便起一个,对应你要生成的网站,主要是类的四个参数,下面一一说明参数 第一个是 网站地址 ,也就是总的页面的起始页面 例如这里是 flutter.cn/docs 第二个是 网页类似frame结构的正文部分的关键标记,刨去 侧边目录和上边的之后的结果,具体内容看图。
查找办法 网页页面右键 选择 检查菜单 调出来 右侧的源码界面
鼠标找到使得主题显示内容高亮的地方的外围上次标记,这里就是 container
第三个 是 左边栏目的每一个item对应的url的标记
这里就是 nav-link
第四个 是生成pdf大小的参数,默认A3,A5都可以。具体参数含义如下
#页面大小设置参考 大的设置A3 普通kindle A5 大小合适, 喜欢看小字可以选letter
page_ref ="""
QPrinter::A0 5 841 x 1189 mm
QPrinter::A1 6 594 x 841 mm
QPrinter::A2 7 420 x 594 mm
QPrinter::A3 8 297 x 420 mm
QPrinter::A4 0 210 x 297 mm, 8.26 x 11.69 inches
QPrinter::A5 9 148 x 210 mm
QPrinter::A6 10 105 x 148 mm
QPrinter::A7 11 74 x 105 mm
QPrinter::A8 12 52 x 74 mm
QPrinter::A9 13 37 x 52 mm
"""
然后 import 相应的父类 DocsParser
class testFluttercn(docs_parser.DocsParser):
pass
testFluttercn("https://flutter.cn/docs","container","nav-link","A3").process()
就可以了。生成的屏幕输出类似下面
E:/source/python/code2pdfword/webdoc2mobi/flutter_cn_docs.py
要解析的网址:https://flutter.cn/docs
默认 图片偏移地址是上面的url,如果有偏移请调用setImgOffset 相对的path的头例如设置为域名
正文内容标签,不包含侧边栏:container
侧边栏的超链接包含的项:nav-link
开始处理 计时开始
获取所需URL中所有item链接
!!!可能需要根据不同项目重写的函数 checkValidUrl 和 checkLocalImageStorage !!!
..................
..................
正在解析 item:https://flutter.cn/docs/about
----------------
关于 Flutter 文档中文版
----------------
正在解析 item:https://flutter.cn/docs/docs/get-started/install
----------------
安装和环境配置
----------------
正在解析 item:https://flutter.cn/docs/docs/get-started/editor
----------------
编辑工具设定
----------------
正在解析 item:https://flutter.cn/docs/docs/get-started/test-drive
----------------
开发体验初探
----------------
..................
..................
----------------
保存到文件
生成的文件名为:flutter_cn_docs_A3.pdf
转换pdf完成
..................
..................
#把页面链接里面的地址修改为绝对地址,并按目录结构下载到本地。
https://flutter.cn/docs/assets/images/docs/tools/android-studio/main-toolbar.png
/assets/images/docs/tools/android-studio/main-toolbar.png
https://flutter.cn/docs/assets/images/docs/get-started/ios/starter-app.png
/assets/images/docs/get-started/ios/starter-app.png
https://flutter.cn/docs/assets/images/docs/get-started/hot-reload.svg
/assets/images/docs/get-started/hot-reload.svg
https://flutter.cn/docs/assets/images/docs/tools/vs-code/device_status_bar.png
/assets/images/docs/tools/vs-code/device_status_bar.png
https://flutter.cn/docs/assets/images/docs/get-started/ios/starter-app.png
/assets/images/docs/get-started/ios/starter-app.png
https://flutter.cn/docs/assets/images/docs/get-started/hot-reload.svg
/assets/images/docs/get-started/hot-reload.svg
https://flutter.cn/docs/assets/images/docs/get-started/ios/starter-app.png
/assets/images/docs/get-started/ios/starter-app.png
*************************************************************
Amazon kindlegen(Windows) V2.9 build 1029-0897292
命令行电子书制作软件
Copyright Amazon.com and its Affiliates 2014
*************************************************************
信息:I9007:选项:-c2:Kindle Huffdic 压缩
........................
........................
信息(prcgen):I15000:可交付标准Mobi文件大小约为: 0015845KB
信息(prcgen):I15001: KF8 可交付文件大小约为: 0016328KB
信息(prcgen):I1037: 创建 Mobi 域名文件出现警告!
总共耗时:589.465139 秒
总共:142个链接
生成文件 html mobi和 pdf三种
如果是结构稍微特别的 覆写函数 checkValidUrl 部分特殊处理下即可,只需如下几行代码就可以了,不用修改父类
class testDartcn(docs_parser.DocsParser):
def checkValidUrl(self, li):
url=""
if not 'http' in li.a.get('href') and not '#' in li.a.get('href'):
url = imgOffset + li.a.get('href')
return url
testDartcn(parserUrl, contentString, navItemString, page_set).setImgOffset(imgOffset).process()
具体代码参考 gitee.com/gammergr/co… 下的目录 webdoc2mobi 目录,因为生成的mobi 带图片,一般比较大,大家手动copy到机器就好了,就不做send mail的脚本了。