当前位置: 首页 > news >正文

学习Python中Selenium模块的基本用法(14:页面打印)

  Selenium模块支持将网页输出为 PDF 文件,不需要调用操作系统的打印对话框,该功能允许通过代码自动化地生成网页的PDF快照。支撑打印功能的核心是PrintOptions类及print_page函数,前者用于设置页面打印的各类参数,而后者则不依赖于操作系统的打印对话框,直接通过浏览器的内置功能生成 PDF。
PrintOptions类的主要属性如下表所示:

序号属性名说明
1orientation设置页面方向,取值包括landscape(横向)、 portrait(纵向)
2page_ranges设置要打印的页码范围 ,官网文档中给出的示例都是字符串数组,可以是范围,也可以是具体页码集合,如[“1”, “2”, “3”] or [“1-3”],不过其它网站中给的例子也有用数值集合赋值
3page_height、page_width设置纸张高度和宽度
4margin_top 、margin_bottom 、margin_left、margin_right设置纸张上下左右方向的页边距
5scale设置页面的缩放比例
6background设置是否包含背景图形,取值包括True、False
7shrink_to_fit设置是否缩放以适应页面 ,取值包括True、False

  设置PrintOptions类的打印参数后,将其传递给driver.print_page函数以便生成PDF,该函数返回Base64编码的字符串,解码后就是PDF文件的内容,最终按需保存为本地pdf文件。
  以打印CSNN网站为例,主要代码如下所示:

import base64
from selenium import webdriver
from selenium.webdriver.common.print_page_options import PrintOptionsdriver = webdriver.Chrome()
driver.get("https://www.csdn.net/")print_options = PrintOptions()
print_options.orientation = "landscape"
print_options.shrink_to_fit  = True
print_options.background = False
print_options.page_ranges =['1-2']# 打印页面并获取PDF内容(Base64编码)
pdf_base64 = driver.print_page(print_options=print_options)# 解码并保存PDF
pdf_bytes = base64.b64decode(pdf_base64)
with open("csdn.pdf", "wb") as f:f.write(pdf_bytes)driver.quit()

  如果运行上述代码时报下面的错误,可能的原因是PrintOptions 类是在较新版本的Selenium中引入的,要想使用PrintOptions来打印页面,需要确保Selenium库是最新的,至少是Selenium 3.141.0及以上版本。

 from selenium.webdriver.common.print_page_options import PrintOptions
ModuleNotFoundError: No module named 'selenium.webdriver.common.print_page_options'

参考文献:
[1]https://www.selenium.dev/zh-cn/
[2]https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/
[3]https://blog.csdn.net/kk_lzvvkpj/article/details/148610502
[4]https://registry.npmmirror.com/binary.html?path=chromedriver/
[5]https://chromedriver.chromium.org/


文章转载自:

http://woHhn9FX.Lhhjz.cn
http://84y6x0BW.Lhhjz.cn
http://AitX4xE4.Lhhjz.cn
http://aEo8bdp5.Lhhjz.cn
http://FTZVPvzL.Lhhjz.cn
http://Na4YcJBh.Lhhjz.cn
http://ELNQrLIp.Lhhjz.cn
http://7qouyfB6.Lhhjz.cn
http://K0u9fgJC.Lhhjz.cn
http://D1Lih9Wi.Lhhjz.cn
http://hcWlGvYb.Lhhjz.cn
http://xbYJeYHL.Lhhjz.cn
http://jmbjHd5R.Lhhjz.cn
http://WMBQRgDJ.Lhhjz.cn
http://RzAtlVpU.Lhhjz.cn
http://8r2VUDUC.Lhhjz.cn
http://1zorxdgB.Lhhjz.cn
http://ib5ORh1N.Lhhjz.cn
http://vW2hi53f.Lhhjz.cn
http://gGX3GHCT.Lhhjz.cn
http://sSZdbPkm.Lhhjz.cn
http://u6wAVFWn.Lhhjz.cn
http://6A59utwR.Lhhjz.cn
http://fzEWb4bm.Lhhjz.cn
http://OEdsT5lB.Lhhjz.cn
http://9zl48zfC.Lhhjz.cn
http://2zcAI1ak.Lhhjz.cn
http://Na3018hY.Lhhjz.cn
http://3as5NhkH.Lhhjz.cn
http://ayuKBuL3.Lhhjz.cn
http://www.dtcms.com/a/388433.html

相关文章:

  • 便携式管道推杆器:通信与电力基础设施升级中的“隐形推手”
  • leetcode 349 两个数组的交集
  • UV映射!加入纹理!
  • 车辆DoIP声明报文/识别响应报文的UDP端口规范
  • Elasticsearch 2.x版本升级指南
  • OpenCV 人脸检测、微笑检测 原理及案例解析
  • [Python编程] Python3 集合
  • [性能分析与优化]伪共享问题(perf + cpp)
  • OC-动画实现折叠cell
  • 关于层级问题
  • Linux基础命令汇总
  • getchar 和 putchar
  • 【序列晋升】35 Spring Data Envers 轻量级集成数据审计
  • 快速入门HarmonyOS应用开发(二)
  • 绿联、极空间、飞牛NAS无需安装,实现快速远程访问
  • Datawhale 理工科-大模型入门实训课程 202509 第1次作业
  • 城市治理综合管理平台
  • 《嵌入式硬件(十三):基于IMX6ULL的增强型中断周期定时器(EPIT)操作》
  • PM2 入门指南与常用命令(含 开机自启、Node.js 及 Java 服务部署)
  • 汽车多核架构中内存系统故障检测的改进算法
  • C++真的比Python更快吗?
  • 【实操分享】使用 SeeDream 4.0 进行 AI 修图——开启专属“AI 云旅拍”
  • 不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
  • Python中正则的三个基础方法
  • 最外层的项目没有父pom配置文件,有很多子模块(maven项目)导入idea中,左侧模块显示不全问题解决
  • 前端将一个 DOM 元素滚动到视口顶部
  • 前端-防重复点击/防抖的方案
  • doris数据库问题
  • PyQt5中实现只读QLineEdit控件的完整指南
  • 金融工程vs金融数学:谁更贴近量化交易?