python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf

目录

      • 一、保存网页快照的三种方法
      • 二、利用打印机保存pdf的方法

  • 最近星球有人问如何使用页面打印功能,另存为pdf
    在这里插入图片描述

一、保存网页快照的三种方法

  • 解决方案已经放在星球内:https://articles.zsxq.com/id_55mr53xahr9a.html
  • 当然也可以看如下代码,如下三种保存快照的方法,分别是保存pdf、保存mhtml文件、保存全局截图,的方法,具体看网页加载情况可以设置滚动到底部再进行如下操作等
from DrissionPage import ChromiumPage
from urllib.parse import urlparse
browser = ChromiumPage()url = "https://www.baidu.com/"
file_name = urlparse(url).netloc.split(':')[0].lstrip('www.')
browser.get(url)
browser.save(path="D:\\", name=file_name, as_pdf=True)
browser.save(path="D:\\", name=file_name, as_pdf=False)
browser.get_screenshot(path="D:\\", name=file_name, full_page=True) 

二、利用打印机保存pdf的方法

  • 常规步骤,一般我们在浏览器打开网页,然后鼠标右击检查,选择打印,会出现如下页面,然后我们选择另存为pdf,保存这么一个流程,那么dp如何实现这个流程,代码在文章末尾
    在这里插入图片描述
  • 打印机保存pdf最终代码
import json
from DrissionPage import ChromiumPage, ChromiumOptionssettings = {"recentDestinations": [{"id": "Save as PDF", "origin": "local", "account": ""}],"selectedDestinationId": "Save as PDF","version": 2,  # 另存为pdf,1 是默认打印机"isHeaderFooterEnabled": True,  # 是否勾选页眉和页脚# "customMargins": {}, # "marginsType": 2,  # "scaling": 100, # 缩放  # "scalingType": 3, # "scalingTypePdf": 3,"isLandscapeEnabled": False,  # landscape横向,portrait 纵向,若不设置该参数,默认纵向"isCssBackgroundEnabled": True,  # 是否勾选背景图形"mediaSize": {"height_microns": 297000,  "name": "ISO_A4",  "width_microns": 210000, "custom_display_name": "A4 210 x 297 mm"},
}
co = ChromiumOptions()
co.set_argument("--window-size=1920, 1080")
co.set_pref('printing.print_preview_sticky_settings.appState', json.dumps(settings))
co.set_pref('savefile.default_directory', r'D:\\')   # 修改为网页转PDF后要保存的路径
co.set_argument('--kiosk-printing')  # 静默打印,无需用户点击打印页面的确定按钮
print(co.preferences)
browser = ChromiumPage(co)
browser.get("https://www.baidu.com/")
browser.run_js(f'document.title="{browser.title}";window.print();', timeout=6)  # 利用js修改网页的title,该title最终就是PDF文件名,利用js的window.print可以快速调出浏览器打印窗口,避免使用热键ctrl+P
  • 参考文章
    https://www.cnblogs.com/caroline2016/p/18348831
    https://shandianchengzi.blog.csdn.net/article/details/137883196
调用浏览器打印机,另存为pdf
co.set_argument("--print-to-pdf")
co.set_pref("download.prompt_for_download", False)
co.set_pref('plugins.always_open_pdf_externally', False)
co.set_pref('plugins.plugins_disabled', ["Chrome PDF Viewer"])
co.set_pref('profile.default_content_settings.popups', 0)
co.set_pref('directory_upgrade', True)
co.set_argument('--enable-print-browser')
browser.run_js("return window.print()", timeout=6)
"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载

使用 VisualStudioUninstaller 卸载 Visual Studio 的详细步骤(以管理员权限运行) 步骤 1:下载并解压 VisualStudioUninstaller 访问下载工具。 点击下载 解压下载的文件到本地目录,例如:C:\VSUninstaller。 步骤 …

Swift 开发教程系列 - 第12章:协议与协议扩展

协议(Protocol)是 Swift 的一种重要特性,它定义了实现特定功能的方法、属性或其他要求。通过协议,可以将行为定义从具体实现中分离,使代码更具可读性和扩展性。Swift 的协议支持协议扩展,这一特性允许我们为…

pytorch中model.cuda()的使用

文章目录 前言一、model.cuda()是什么?二、使用步骤1. 检查GPU是否可用2. 选择设备3. 移动模型到选定设备4. 确保数据和模型在同一设备上 三、注意事项总结 前言 本文旨在详细解释在PyTorch框架中model.cuda()方法的使用,以及与之相关的torch.cuda.devi…

Redis 中 Bitmap 原理和应用

Bitmap Redis中的Bitmap(位图)是一种较为特殊数据类型,它以最小单位bit来存储数据,我们知道一个字节由 8个 bit 组成,和传统数据结构用字节存储相比,这使得它在处理大量二值状态(true、false 或…

文件工具类

isImage(MultipartFile file) 检查文件是否是图片类型isExcel(MultipartFile file) 检查文件是否是excel类型checkFileType(MultipartFile file, String... type) 检查文件是否是指定的类型uploadFile(MultipartFile file) 上传文件downloadFile(HttpServletResponse response,…

elementUI 点击弹出时间 date-picker

elementUI的日期组件,有完整的UI样式及弹窗,但是我的页面不要它的UI样式,点击的时候却要弹出类似的日期选择器,那怎么办呢? 以下是elementUI自带的UI风格,一定要一个输入框来触发。 这是我的项目中要用到的…

微软日志丢失事件敲响安全警钟

NEWS | 事件回顾 最近,全球最大的软件公司之一——微软,遭遇了一场罕见的日志丢失危机。据报告,从9月2日至9月19日,持续长达两周的时间里,微软的多项核心云服务,包括身份验证平台Microsoft Entra、安全信息…

2021-04-22 51单片机玩转点阵

理论就不赘述了,网络上多得很,直接从仿真软件感性上操作认识点阵,首先打开ISIS仿真软件,放置一个点阵和电源与地线就可以开始了;由点阵任何一脚连线到地线,另一边对应的引脚就连接到电源,如图:点击运行看是否点亮?看到蓝色与红色的点表示电源正常但是没有任何亮点,这时对调一下…

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.事务管理(事务进阶) 7.MySQL 索引 1.DQL数据查询语言 分为五大…

Ubuntu系统电脑没有WiFi适配器

电脑安装了Ubuntu20.04后发现没办法连接WiFi,也找不到WiFi图标,一般来说是因为Ubuntu系统没有网卡驱动,安装一下即可 解决办法如下: 先用网线或者手机开热点连接到到电脑,让电脑有网络可以使用.终端执行更新命令sudo apt updatesudo apt-get install bcmwl-kernel-source 执行s…

恭喜!2024年度大连市科技人才创新、科技人才创业项目拟立项公示!

精选SCI/SSCI/EI SCI&EI ●IEEE 1区TOP 计算机类(含CCF); ●EI快刊:最快1周录用! 知网(CNKI)、谷歌学术期刊 ●7天录用-检索(100%录用),1周上线; 免费稿件评估 …

Spring Boot 接口与单元测试

一、引言 在现代软件开发中,构建高质量的应用是至关重要的目标。Spring Boot 作为一种流行的 Java 开发框架,为快速构建企业级应用提供了强大的支持。然而,仅仅依靠开发过程中的调试是远远不够的,单元测试作为一种有效的质量保障手…

【前端】-音乐播放器(源代码和结构讲解,大家可以将自己喜欢的歌曲添加到数据当中,js实现页面动态显示音乐)

前言:音乐播放器是前端开发中的一个经典项目,通过它可以掌握很多核心技术,如音频处理、DOM操作、事件监听、动画效果等。这个项目不仅能提升前端开发的技能,还能让开发者深入理解JavaScript与HTML的协同作用。 页面展示&#xff1…

让SQL更优雅!深入浅出【公用表表达式(CTE)】语法及实战案例

全文目录: 开篇语🌟 前言📜 目录💡 什么是CTE?🎨 CTE的语法与结构💥 使用场景:CTE何时更香?🎬 CTE实战案例案例1:统计每个部门的平均薪资案例2&am…

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包: MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件: #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…

03_CC2530基于定时器3的Delay_ms函数

CC2530定时器3与Delay_ms延时函数 前言 ​ Delay函数是开发中常用到的函数,可以用于按键消抖,LED闪烁,生成一定频率信号等(软件模拟通讯协议)。由于利用循环执行一定次数的空指令实现的延时函数在精度上并不能让人满意,而用定时…

【系统面试篇】其他相关题目——虚拟内存、局部性原理、分页、分块、页面置换算法

目录 一、相关问题 1. 什么是虚拟内存?为什么需要虚拟内存? (1)内存扩展 (2)内存隔离 (3)物理内存管理 (4)页面交换 (5)内存映…

43.第二阶段x86游戏实战2-提取游戏里面的lua

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

容器内pip安装Apache Airflow的经历:如何重置初始密码

背景 Apache Airflow™https://github.com/apache/airflow 是一个开源平台,用于开发、调度和监控面向批处理的工作流程。Airflow 可扩展的 Python 框架使您能够构建几乎可以连接任何技术的工作流程。Web 界面有助于管理工作流程的状态。Airflow 可以通过多种方式部…

BP 网络的标准学习算法及其实现

BP 网络的标准学习算法及其实现 一、引言 BP(Back Propagation)神经网络是一种广泛应用于机器学习和人工智能领域的神经网络模型。它通过反向传播算法来调整网络的权重,以最小化预测输出和实际输出之间的误差。BP 网络的标准学习算法对于理…