这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战
0x1、引言
上节《Van♂Python | 某星球的简单爬取》 有读者在后台私聊我说:
爬取结果保存到Markdown中,不方便在手机上看,
我:
离谱,咳咳,说不定自己以后也会用到,意思意思折腾下吧,接着下午摸鱼的时间,利用搜了一波关键字后,看到了两种常规玩法,都来试试,先来折腾下看似简单的库 ↓
0x2、pandoc库初体验
支持 超!超!超!
多类型的互相转换,有下面这一大坨:
好的,不用去看具体支持哪些文件格式,你能想到的基本都有,我们这里是想把 Markdown转成PDF
。
怎么安装的话可以看 INSTALL.md,像笔者中Windows的直接下载压缩包或用choco进行安装都可以,这里采用前者,直接下载 免安装包:
接着尝试 配置环境变量,以便到处都可以执行pandoc命令:
解压压缩包 → 进入文件夹 → 选中 pandoc.exe → 按住shift右键 → 复制路径 → 此电脑 → 右键打开属性 → 找到高级系统设置 → 环境变量 → 在系统变量(S)处 → 找到PATH → 编辑 → 新建 → 把刚复制的路径贴到这里:
配置完后,打开cmd,键入:pandoc -v,如果不是输出:pandoc 命令找不到之类的,而出现下面这种的:
说明配置成功,如果确定路径没错,又经过了开机关机等,依旧无效的话,可以跟笔者一样直接把解压后的文件丢到Python的Scripts目录下,通过where命令获取Python的安装目录:
来到下图路径,直接把文件都丢这里就好了
配置完,接着看下怎么用:
比较简单,就是命令行执行下:
1 | bash复制代码pandoc -o 待转换文件 转换后的文件 |
试试直接把txt转成pdf:
需要指定 latex引擎,有下述可选项:
有点麻烦了,有些还要单独下个Latex镜像,4个多G,所以直接还是直接转换成Word文档的格式 → docx了:
1 | 复制代码pandoc 123.txt -o test.docx |
打开看看效果:
还行,接着就是一些遍历文件夹的常规操作了,拼接cmd字符串,利用subprocess执行命令,示例代码如下:
1 | python复制代码def md_to_doc(file_path): |
文件生成完毕了,接着来再写脚本把那么多的Word文档合成一个,需要用到下述库 (直接pip装即可):
1 | bash复制代码pip install python-docx |
接着直接肝代码:
1 | python复制代码from docx import Document |
运行后等坐等程序跑完即可,因为默认的合并顺序是按照文件名的,而我们创建文件时采用的是时间戳方式,所以不用担心顺序问题。看看合成后的文档,可以:
841mb,2927页,WPS打开当场卡死:
0x3、稍微麻烦点的方案
接着说说第二个方案,就是先将Markdown渲染成HTML,然后再转换成PDF,用到这两个库:
1 | 复制代码pip install markdown |
还有:wkhtmltopdf,同样下载压缩包,配置环境变量的方式:
命令行键入:wkhtmltopdf -V
查看配置是否生效~
接着就可以直接搞了,写出下面的测试demo:
1 | python复制代码import pdfkit |
传入md文件路径,如果运行后出现:
Pdfkit OSError: No wkhtmltopdf executable found
就是上面的环境变量没生效,重开一个窗口,或者通过下述代码指定路径亦可:
1 | python复制代码import pdfkit |
接着运行还报下述错误:
就是引用到了外部资源,但是却没找着,可以try-except捕获一波异常:
1 | python复制代码def md_to_pdf(file_path): |
运行后打开生成的PDF,看看效果:
还行,不过这种默认的渲染, 不支持标注、表格、LaTeX、代码块、流程图、序列图和甘特图 ,需要引入更多的扩展。
示例如下:
1 | python复制代码# 启用tables扩展 |
示例如下:
1 | bash复制代码# 安装数学包 |
- 使用第三方Markdown渲染HTML的工具导出HTML (如作业部落),再转成pdf
示例如下:
1 | python复制代码pdfkit.from_file('test.html', 'test.pdf', options={'encoding': 'utf-8'}) |
更多具体内容可参考:Python将MarkDown转PDF(完美转换HTML,含LaTeX、表格等渲染)
0x4、小结
看着都挺简单的,实际上,有深度定制样式需求的,有得折腾,不过巧了,笔者没有,能看就行,感兴趣的读者可以自行摸索下~
爬取数据保存方式技巧+1,阅读体验也更加了,23333,以上就是本文的全部内容,有问题欢迎评论区指出,感谢~
本文转载自: 掘金