如何用Python将HTML资料快速转换为PDF教程,解决上千页打印难题
公众号“菜鸟学Python”,设为“star”

第451篇原创文章,30万+学Python!
临近开学,大家都忙着准备各种学习材料,准备在新学期好好学习,充实自己。小编身边的同学也是如此。最近,我的同学小丽遇到了一个非常棘手的问题。
她想把网页上的Python学习教程打印出来,方便自己学习。不过,手动将几千页的教程一张一张地转换成PDF并保存在本地确实很麻烦。
这是html转pdf的问题。其实网上有很多好的html资源,但是学习起来很困难,也不方便!于是小编就答应小丽,这件小事就由我来处理。今天小编就给大家分享一下如何使用Python将html数据转为pdf。
01. 抓取学习资料
如今,互联网上有大量的在线学习资料。为了方便讲解,小编以python3.9.2的中文文档作为演示例子,截取并保存到本地。网页链接如下:
打开上面的链接后,你会发现网页上不同内容的链接地址,包括基本的python字符、python语法等。
02. 获取网页链接
上图中,我们需要特别注意的是用红色方块标记的链接。每个链接都会跳转到对应的子页面,而子页面中,就是我们要保存的内容。
可以看到,上图中,python快速概述子页面包含了我们需要提取的文本内容。所以将html内容保存为pdf的第一步是获取子页面的链接。由于大多数教程都有固定的内容,因此大多数教程网页都使用静态页面。可以在网页源代码中轻松找到子页面的网页链接。
对于子网页的链接抓取,程序如下所示:
程序中使用BeautifulSoup库解析网页源代码,然后提取所有子页面链接地址并返回。如果抓取失败,则直接返回None。
03.html转pdf
获取子网页的链接后,下一步是将html子网页保存为pdf文件。编辑器使用的pdfkit库可以将网页保存为pdf文档。首先介绍一下pdfkit库的安装。
按照上述操作流程安装pdfkit库。对于pdfkit库的使用,常见的用法有以下三种:
上面的程序主要完成几个步骤:
首先,需要指定wkhtmltopdf.exe文件的路径;
因此pdfkit库只能将子网页保存为单独的pdf文档,而无法通过pdfkit库直接将所有子网页拼接成完整的pdf文档。编辑器使用PyPDF2库中的PdfFileMerger类来实现pdf文档的拼接。程序如下图所示。
程序中,首先将所有HTML网页保存为单独的PDF文档,然后通过PdfFileMerger类对象对PDF文档进行拼接。最后就可以得到所有的pdf内容了。最后我们通过视频展示来看看程序的效果。
另外,该程序不仅可以爬取python3.9的中文文档,还可以通过修改获取网页链接的程序来爬取其他在线文档。例如,对于爬取Flask中文文档,程序只需要进行如下所示的修改,即可将Flask的在线文档保存为PDF文档。
04.总结
学习Python其实很有趣,也很有用。由于Python拥有大量现成的库,它可以帮助我们轻松解决工作中的许多琐碎麻烦。小编对上面的程序稍作修改,很快就帮阿丽完成了教程,保存为pdf并发送给她。小编和女神的关系更加亲密了。
其实源码很简单,大家敲一下就行了(读万卷还不如自己敲)。有不懂的地方可以问小助手(进入公众号后台:小助手)。
为了方便大家更好的理解,我们会在B站录制一个完整的视频(详细见原文)来一步步讲解程序,然后将源码和视频一起提供!