牛逼!40行Python代码一键把html网页保存为pdf,太方便了!

Python 代码轻松实现 HTML 文件及HTML字符串到 PDF 文档的转换 文章说明了使用Python进行HTML到PDF转换方法,解释了使用Python将HTML转换为PDF的优势和限制,并提供了使用Spire.Doc for Python进行HTML到PDF和HTML字符串到PDF转换的说明和代码示例。通过参考文章的方法,开发人员可以创建自己的Python程序,实现自动化和高质量的转换。 阅读详情

公众号 “菜鸟学Python”, 设为 “星标”

第451篇原创,和30w+一起学Python!

最近临近开学了,大家都在忙着准备各种学习的资料,准备在新的学期好好学习,充实自己。小编身边的同学也是如此,最近,小编的同学小丽就遇到了一个很棘手的问题。

她想将一个网页的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发送给了她,小编与女神的关系更拉近了一步。

其实源码非常简单,大家也照着敲一边(看千边读万边,不如自己动手敲一边),有不懂的地方可以找小助手(公众号后台输入:小助手)。

为了方便大家更好的理解,我们会录制一个完整的视频在B站(详细见阅读原文),一步一步讲解这个程序,到时把源码和视频一起奉上!

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影

年度爆款文案

点这里,直达菜鸟学PythonB站!!
python之xhtml2pdf: HTML转PDF工具示例详解 本文介绍了Python中一款强大的HTML转PDF工具XHTML2PDF,并提供了详细的示例说明,帮助读者快速上手使用该工具。通过本文,读者将了解如何安装和配置XHTML2PDF,以及如何使用该工具将HTML文件转换为高质量的PDF文档。在现代的应用程序开发中,我们经常需要将HTML内容转换为PDF文档。这种需求在打印电子商务收据、生成报告、导出电子书等场景中非常常见。Python中有众多强大的工具库可用于实现HTML到PDF的转换,而XHTML2PDF就是其中一款非常流行的选择。 阅读详情

相关推荐

将打开的网页批量保存为PDF(python)

5. 将html文件和pdf.py放到同一个目录下,并在当前目录新建文件夹命名为pdf,注意更换代码中的html文件名(bookmarks.html)2. 安装工具wkhtmltopdf,并将安装目录下的bin目录添加到环境变量。文件管理器-此电脑右键属性-高级系统设置-环境变量-系统变量-变量path。省力,但不多,需要安装python模块bs4和工具wkhtmltopdf。4. 编辑导出的html文件,只保留需要的链接。

m0_53022214的博客 2975

极速转换,4步学会用Python将HTML转换成PDF

在Web开发和报告任务中,将HTML内容转换为PDF是一种常见需求。Python作为一个庞大的生态系统,提供了各种库来完成这个任务。在这里我将指导你完成使用Python将HTML转换为PDF的过程,包括一个示例实现和一个单元测试。我们将使用pdfkit库,该库是命令行工具的Python封装。

qq_41314882的博客 3272

SolidWorks Flow Simulation项目克隆:参数化研究与方案对比效率提升指南

计算流体动力学(CFD)仿真是现代工程设计中的重要工具,其核心原理是通过数值方法求解流体运动方程来预测物理现象。在工程实践中,参数化研究和方案对比是CFD应用的关键场景,能够帮助工程师优化设计方案并验证性能指标。SolidWorks Flow Simulation作为集成在CAD环境中的专业CFD工具,其项目克隆功能通过复制完整仿真设置(包括边界条件、网格参数和目标函数),显著提升了参数优化和多方案对比的效率。该功能特别适用于散热器优化、阀门流量分析和空气动力学研究等应用场景,能够避免重复设置带来的时间消耗

weixin_30564785的博客 561

python实现长文HTML自动转换为pdf

本文将介绍如何使用python将打印为pdf的几种方法,主要解决了长文中图片加载不全的问题,部分css样式可能无法体现。

weixin_52297807的博客 2029

Python将HTML保存为PDF

wkhtmltopdf是一个命令行工具,主要用于将HTML转换为PDF文件。pdfkit是对wkhtmltopdf的封装,Python可以通过pdfkit调用wkhtmltopdf,进而实现批量转换PDF操作。

ylmx5201314的博客 1569

python将html转pdf

🏆本文收录于《优快云问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1321

python将html转化为pdf

如果 linux 上没有安装中文字体,那么处理 html 中的中文字符将会有问题。所以需要在 linux 上安装中文字体。首先在一台安装了中文字体的机器上找到需要安装的字体文件,我在自己的 Windows10 的目录 C:\Windows\fonts 下找了宋体对应的字体文件 simsun.ttc 并拷贝到 centos7 的字体文件目录 /usr/share/fonts 目录中即可。

weixin_45783664的博客 1153

EVE-NG 新增 qcow2 镜像教程

本文介绍了如何在 EVE-NG 网络仿真平台中添加 QCOW2 镜像并配置 YML 文件。首先,用户需要了解 EVE-NG 的目录结构,上传并重命名 QCOW2 镜像,然后设置文件权限并刷新界面以识别设备。接着,讲解了 YML 文件的作用,它用于定义设备的CPU、内存、网卡等参数,并给出了配置示例。若有多个设备版本,可以通过复制并重命名 YML 文件使其独立显示。最后,通过检查 QEMU 进程和日志验证 YML 配置是否生效。总结部分强调了 EVE-NG 的自动识别机制以及独立管理设备版本的方式。

qq_41862216的博客 3075

Python实现HTML转PDF

将HTML文件转换为pdf读取

CharizarD12138的博客 1516

微生物测序分析LEfSe

LEfse分析定义 LEfse分析即LDA Effect Size分析,可以实现多个分组之间的比较,还进行分组比较的内部进行亚组比较分析,从而找到组间在丰度上有显著差异的物种(即biomaker);

宁生信 5万+

Coze:手把手教你搭建 小红书二创 智能体

前一篇 “” ,讲了如何针对需求进行拆解,并拆解 ”小红书二创“ 智能体,分为四个内容模块。通过上述步骤,开始一步一步构建 “小红书二创” 智能体。用来测试的小红书地址:http://xhslink.com/a/quxWEDAj3J48。

保持敏感!保持学习! 1436

python html转为为PDF

python html转为PDF

Conan_ft 2231

深入解析JESD204B Periodic SYSREF在多ADC/DAC系统中的同步优化策略

本文深入探讨了JESD204B Periodic SYSREF在多ADC/DAC系统中的同步优化策略,针对雷达阵列和宽带通信系统中的同步精度问题,详细解析了硬件实现细节、参数配置实战经验及系统级优化方法。通过案例分析和技术要点,帮助工程师解决由温度漂移和时钟抖动引起的同步挑战,提升系统性能。

weixin_29267307的博客 137

Python之HTML转PDF

Python之HTML转PDF

tangsiqi130的博客 1085

Swin Transformer 类可视化(grad CAM)

完整代码 from pytorch_grad_cam import GradCAM, ScoreCAM, GradCAMPlusPlus, AblationCAM, XGradCAM, EigenCAM from pytorch_grad_cam.utils.image import show_cam_on_image from torchvision.models import resnet50 import glob from demo import parse_option from models i

G果的博客 6639

芒果YOLOv12改进13:独家原创改进最新 CFNet 核心结构|即插即用 | 首发改进显著提升检测性能,小目标检测涨点必备

芒果YOLOv12改进13:独家原创改进最新 CFNet 核心结构|即插即用 | 首发改进显著提升检测性能,小目标检测涨点必备

包括YOLOv5、YOLOv7、YOLOv8等模型改进 289

【Python】用python将html转化为pdf

将之前的save_file方法改成save_to_pdf,并且在get_body方法中直接返回str(div),而不是div.text。自媒体的出现,文件命名开始五花八门,下面用一行代码去除非法字符。文件打开正常,说明代码没有问题,后面就可以自由发挥爬虫技能。传入任何html标签【烦人广告说拜拜,真正做到网页私人定制】源html是动态大尺寸,pdf显示静态,尺寸有减小。其实早在去年就有做过,一直没有写,先简单记录下。1、主要用到的工具【wkhtmltopdf】根据系统选择安装包,速度有点慢,先挂着。

SAGGITARXM 5376

《Python等级认证CCF-GESP真题解析》专栏总目录

❤️ 专栏名称:《🌸 专栏介绍:中国计算机学会GESP《CCF编程能力等级谁》Python编程(1~8级)历届真题解析。🚀 订阅专栏:订阅后可阅读专栏内所有真题解析,真题持续更新中,限时9.9元,欢迎订阅!

人生就是一个不断学习的过程 1878

用Python处理PDF(一)-网页导出成PDF

1.chatgpt真是个好东西,上面过程中从下载软件,配置环境,到代码查错,全部都可以向其咨询,精准解决各种问题。2.两种处理方式from_url()和from_string()研究得不够清楚,另外对options中的参数也没有仔细吃透,等有时间再详细研究。3.对静态url页面的处理好于动态页面。以上是我在优快云上发表的第一篇文章,不为别的,只为记录第一次独立研究完成一个小工具,告别小白的第一步从chatgpt开始。

nccbpm的博客 2556

鸢尾花分类预测

鸢尾花数据总用有150个样本,是一个典型的分类数据集,共有3个类别,分别是山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica),每个样本的特征有4列sepal_length:萼片长度sepal_width:萼片宽度petal_length:花瓣长度petal_width:花瓣宽度这里我们定义了随机森林模型作为实例,来进行模型训练,之后我们会对其使用网格搜索找到最优的参数。

优快云 精品推荐 2189

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)

本文将探索自动化把URL列表所对应的网页打印成PDF文件的实现方法,内含完整代码,可直接运行使用,建议收藏备用。

同学小张的博客 4373

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用Python将HTML快速转换成PDF

大家好,在Web开发和报告任务中,将HTML内容转换为PDF是一种常见需求。Python作为一个庞大的生态系统,提供了各种库来完成这个任务。本文将指导完成使用Python将HTML转换为PDF的过程,包括一个示例实现和一个单元测试。我们将使用pdfkit库,该库是命令行工具的Python封装。

csdn1561168266的博客 1281

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python 实现将网页转化成pdf文档

本文章仅说思路,不提供具体实现的代码 1.爬取要制作成pdf的HTML网页标签 2.将爬取到的标签放到body标签内部组合成完整的HTML格式代码(我记得有个库可以实现,找了半天没找到,有记得的帮忙下边评论下) 3.使用pdfkit库将组合完整的HTML代码转化成pdf文档 pdfkit库的安装使用 pip install pdfkit 还需要安装配套的软件wkhtmltox(官网下载就行,一路next安装即可) 并且将wkhtmltox安装目录中的bin目录配置到path环境变量中 pfdkit.from

CXY00000的博客 3934

python实现网页转pdf

在Windows环境下,若找不了.exe文件。一、下载wkhtmltopdf。二、安装python库。

weixin_45842139的博客 1785

【python】将html字符串或者html文件生转换成为pdf文件

该库是一个功能强大且易于使用的 Word 文档处理库。它使开发人员能够在 Python 应用程序中创建、阅读、修改和转换 Word 、Doc、XLS、PDF文档等等,而无需 Microsoft Word 或任何其他第三方软件。具体功能可自行查看官方文档。html字符串html文件转pdf

weixin_50774086的博客 771
上一篇: Python迎来30岁生日,先驱Pablo Galindo:没想到Python这么流行
下一篇: 100 个 pandas 数据分析函数总结
菜鸟学Python
博客等级 码龄9年 8061粉丝 571原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值