牛逼!40行Python代码把html网页保存为pdf,太方便了
liuian 2024-12-29 04:27 64 浏览
最近临近开学了,大家都在忙着准备各种学习的资料,准备在新的学期好好学习,充实自己。小编身边的同学也是如此,最近,小编的同学小丽就遇到了一个很棘手的问题。
她想将一个网页的Python学习的教程打印下来,方便自己来学习,但是上千页的教程,如果通过手动的方式,一个一个的去转成pdf并保存到本地,实在是麻烦的不。
这就是一个html转pdf的问题,其实网上有很多不错的html资源,但是苦于学习起来,不方便!于是小编就跟小丽保证,这点小事包在我身上。今天,小编就跟分享一下如何用Python把html资料变成pdf。
01.抓取的学习资料
如今网上的在线学习资料可谓是多如牛毛,为了方便讲解,小编就利用python3.9.2的中文文档作为演示的例子,来将其抓取并保存到本地,其网页链接如下:
https://docs.python.org/zh-cn/3.9/tutorial/index.html
打开上述链接后,大家会在网页中找到不同内容的链接地址,包括了基础的python字符、python语法等内容。
02.获取网页链接
在上图中,我们需要格外关注的是红色方格标注的链接,每个链接都会跳转到对应的子网页中,而在子网页中,就是我们想要保存的内容。
可以看到,上图中,在python速览子页面中,包含了我们需要提取的文字内容。所以将html内容保存为pdf的第一步便是获取到子页面的链接。由于教程大都是固定内容,因此对于教程的网页,大都采用的是静态页面,在网页源代码中可以很轻松地找到子页面的网页链接。
对于子网页的链接抓取,程序如下图所示:
程序中,通过BeautifulSoup库来解析网页源代码,然后提取所有的子页面链接地址并返回,如果抓取失败,则直接返回None。
03.html转pdf
在得到子网页的链接后,接下来就是将html的子网页保存为pdf文件。小编使用的pdfkit库,pdfkit库可以将网页保存为pdf文档。首先小编来介绍一下pdfkit库的安装。
- 下载https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.mxe-cross-win64.7z 并解压到本地文件中。(后台输入:pdf) 直接获取。
- 将解压文件中的bin文件路径添加到系统变量Path中。
- 执行pip install pdfkit
- 执行pip install wkhtmltopdf
按照上述的操作流程,就可以安装pdfkit库。对于pdfkit库的使用,常见的用法有以下三种:
上面的程序主要完成以下几步:
首先需要指定wkhtmltopdf.exe文件的路径;
- 然后分别通过from_url、from_file和from_string的三种方式来保存为pdf文件;
- 需要注意的是,from_file和from_url中的第一个参数必须是一个html的字符串或者是html文档的列表;
- 但是小编通过程序运行发现,from_url第一个参数只能是html的字符串,不能是html的列表。
因此,pdfkit库只能将子网页保存为单独的pdf文档,无法直接通过pdfkit库将所有的子网页拼接成一个完整的pdf文档,小编通过PyPDF2库中的PdfFileMerger类来实现pdf文档的拼接。程序如下图所示。
程序中首先将所有的html网页保存为单独的pdf文档,然后通过PdfFileMerger类对象来实现pdf文档的拼接。最后就可以得到全部的pdf内容。最后我们通过视频的展示,来看一下程序的效果吧。
除此之外,程序不光可以抓取python3.9的中文文档,针对其他的在线文档,只需要对获取网页链接的程序进行修改即可抓取,例如对于Flask中文文档的抓取,程序只需要按照下图进行修改,即可将Flask的在线文档保存为PDF文档。
04.总结
学习Python其实非常有趣,也很有用。因为Python有大量的现成的库,可以帮助我们把工作中的很多琐碎的烦事轻松解决。小编将上述的程序稍加修改,很快就帮阿丽搞定了教程,保存为pdf发送给了她,小编与女神的关系更拉近了一步
相关推荐
-
- 安卓软件apk安装包下载(安卓apk安装器下载)
-
1.设定-安全-未知来源-打钩。2.可能是下载的软件安装包不完整,请重新下载安装。3.可能是安装软件的版本低于现有版本、或者软件兼容性问题所导致,请更换其他版本或者其他软件再次下载安装。4.安卓手机支持的软件格式为APK,这种情况可以更换其...
-
2026-01-07 12:05 liuian
- 一千左右的笔记本电脑哪个好
-
¥1000左右,笔记本性价比最高的也就性价比之王的肯定,是联想的这种脾气吧,因为联想的笔记本的是国产的最好的这种脾气吧,他生产的笔记本那有高档中档和低端的这几种所以¥1000左右的可以买一杯联想比较性...
- 电脑截屏的快捷按键(“电脑截屏的快捷键”)
-
电脑截图快捷键是Ctrl+PrScrn。电脑上截图的方法一般有这4种方式:1、Ctrl+PrScrn使用这个组合键截屏,获得的是整个屏幕的图片;2、Alt+PrScrn这个组合键截屏,获得的结果是当...
-
- qq空间为什么打不开了怎么办
-
1、首先我们需要在自己的手机上下载并安装最新版本的QQ空间,安装完成后打开QQ空间,登录自己的账号。2、首先我们尝试打开QQ空间,打不开在手机上找到设置,点击进入设置界面,在这里我们可以对手机进行部分设置。3、进入设置界面后,我们需要在其中...
-
2026-01-07 10:55 liuian
- 联想怎么恢复系统(联想电脑系统恢复怎么操作)
-
如果电脑重新分区,安装了操作系统就无法恢复到预装系统。 安装了系统,没有做系统备份也是无法恢复的,只能够重新安装。 联想电脑的一键还原系统在需要使用的时候直接按下一键还原按键即可,系统会自动进...
- 台式机无线网卡连不上wifi怎么办
-
1、无线网卡驱动没更新或者不匹配;解决办法:开始→控制面板→系统→硬件→设备管理器→网络适配器→右击无线网卡→更新驱动程序软件→按部就班完成更新;2、无线网络服务未开通;解决办法:开始→控制面板→管理...
- 126官方邮箱登录入囗(126邮箱登录入口手机版官网)
-
126邮箱是网易的一个免费邮箱登录入口在浏览器输入:mail.126.com浏览器进入126邮箱网站之后,即可自行登录126邮箱账号。如何在手机上登录126邮箱1、打开手机,找到并打开网易邮箱软件。2...
- 耐用笔记本电脑排行(最耐用笔记本排名)
-
最耐用的笔记本电脑是联想牌子。联想绝对是最耐用的,质量最好的轻薄本,也是最好用的轻薄本之一。联想笔记本电脑的质量和做工在世界上能称第一。十大公认最耐用笔记本如下1、华硕灵耀x14第12代英特尔酷睿i...
- 固态硬盘量产工具下载(固态硬盘量产工具下载合集)
-
固态硬盘量产工具好用的依次是:SLC颗粒最好,MLC颗粒其次,TLC颗粒再次,QLC颗粒现在最次;但是颗粒也分原厂颗粒,黑片,白片;原厂最好,黑片就是淘汰下来的渣渣。slc最好寿命长速度快也最贵...
- 文件夹怎么显示隐藏的文件夹
-
查找隐藏文件夹的方式如下:1、点击桌面的“计算机”,双击打开计算机2、在计算机页面中,点开自己存储文件夹的盘,这里以c盘为例。其他盘也可以依据这样的方式进行查找。3、找到左上角的“组织”,在其下拉的菜...
-
- 电脑硬盘怎么格式化干净(电脑硬盘格式化详细过程)
-
用普通格式化硬盘最干净,采用普通格式化,可以将硬盘中的内容删除掉,同时做上标志,而快速格式化只是对硬盘做了格式化标志,而没有删除内容硬盘格式化步骤:1,打开“我的电脑”,可以看到已经分区好但需要重新格式化的硬盘。2,用右键点击需要格式化的硬...
-
2026-01-07 06:55 liuian
- 下载的歌曲怎么转换成mp3格式
-
一般酷狗音乐下载的都是MP3格式的啊,如果不是的话,也可以通过以下方法来转换。;1、打开浏览器搜索关键词,找到该软件后下载并安装,然后双击打开,再点击“添加文件”。;2、添加后,在右下角选择转换格式为...
- 所有cpu性能天梯图(所有cpu性能天梯图都一样吗)
-
1、英特尔(Intel)i59400F酷睿六核盒装CPU处理器;2、英特尔(Intel)i7-9700K酷睿八核盒装CPU处理器;3、英特尔(Intel)i78700酷睿六核盒装...
- 电脑无故占用大量内存(电脑无故占用大量内存怎么办)
-
一种可能是后台运行太多,可能是你最近进行了很多任务,导致电脑占用内存变大。也可能是内在任务,类似于你引入了潜在任务,即电脑程序负荷太重,且程序存在不稳定因素,任务自动执行以缓解电脑压力。这个一般没事的...
- 一周热门
-
-
飞牛OS入门安装遇到问题,如何解决?
-
如何在 iPhone 和 Android 上恢复已删除的抖音消息
-
Boost高性能并发无锁队列指南:boost::lockfree::queue
-
大模型手册: 保姆级用CherryStudio知识库
-
用什么工具在Win中查看8G大的log文件?
-
如何在 Windows 10 或 11 上通过命令行安装 Node.js 和 NPM
-
威联通NAS安装阿里云盘WebDAV服务并添加到Infuse
-
Trae IDE 如何与 GitHub 无缝对接?
-
idea插件之maven search(工欲善其事,必先利其器)
-
如何修改图片拍摄日期?快速修改图片拍摄日期的6种方法
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
