目录

  • 需求
  • 思路步骤
  • 具体代码

需求

selenium爬取页面的时候有时需要保持页面为PDF格式 并且不能使用pdfkit 模块(有的网址限制必须浏览器打开)

思路步骤

  1. 一:导入模块
  2. 二:在初始化driver对象的时候设定,浏览器静默保存(即保存时不弹出另存为按钮)和默认保存位置
  3. 三:打开所需网页
  4. 四:调用js打开打印窗口
  5. 修改当前页面标题(因为保存文件名就是标题名)并静默下载

具体代码


import json
from selenium.webdriver.common.by import By
from seleniumwire import webdriverchrome_options = webdriver.ChromeOptions()
settings = {"recentDestinations": [{"id": "Save as PDF","origin": "local","account": ""}],"selectedDestinationId": "Save as PDF","version": 2,  # 另存为pdf,1 是默认打印机"isHeaderFooterEnabled": True,  # 是否勾选页眉和页脚# "customMargins": {},# "marginsType": 2,#边距(2是最小值、0是默认)# "scaling": 100, # 缩放比例  100 表示不缩放# "scalingType": 3,# "scalingTypePdf": 3,# "isLandscapeEnabled": True,  # 若不设置该参数,默认值为纵向"isCssBackgroundEnabled": True,"mediaSize": {"height_microns": 297000,"name": "ISO_A4","width_microns": 210000,"custom_display_name": "A4"},
}
chrome_options.add_argument('--enable-print-browser')
# chrome_options.add_argument('--headless') #headless模式下,浏览器窗口不可见,应当可提高效率
save_path = r'C:\Users\Administrator\Desktop'
prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(settings),'savefile.default_directory': save_path,
}chrome_options.add_argument('--kiosk-printing')  # 静默打印,无需用户点击打印页面的确定按钮
chrome_options.add_experimental_option('prefs', prefs)driver = webdriver.Chrome(chrome_options=chrome_options)  # 初始化浏览器# 打开需要保持的网址并等待加载完成图片
driver.get('https://alifei04.cfp.cn/creative/vcg/800/version23/VCG41175510742.jpg')
driver.implicitly_wait(10)
element = driver.find_element(by=By.XPATH, value='/html/body/img')# 调用js 保持PDF
save_file_name = 'test.pdf'
driver.execute_script(f'document.title="{save_file_name}";window.print();')  # 利用js修改网页的title,该title最终就是PDF文件名,利用js的window.print可以快速调出浏览器打印窗口,避免使用热键ctrl+Pinput('*----')  # 可以做其他事情 但是不嫩立即qiut 否则关闭浏览器了后就不能下载了
driver.quit()

selenium利用javascript进行自动打印网页为PDF相关推荐

  1. php生成网页按钮,JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧...

    创建元素的方法: 1.利用createTextNode()创建一个文本对象 2.利用createElement()创建一个标签对象 3.直接利用容器标签中的一个属性:innerHTML-----本质上 ...

  2. python如何自动打印_利用Python每天自动打印练习题

    在日常教学工作中,我几乎每天都会给班上的每位同学打印一份口算练习题.为了防止出现抄袭的现象,给每位同学的练习题都不相同. 通过网上下载的一个小软件自动生成的练习题. 之前的操作是通过网上下载的软件,自 ...

  3. PHP 打印网页 输出 pdf,image 调用wkhtmltopdf/ WkHtmlToImage

    2019独角兽企业重金招聘Python工程师标准>>> 目前只在windows/linux测试,安装 WkHtmlToPdf/WkHtmlToImage工具,如转换过程出现乱码,请安 ...

  4. Selenium 利用 JS/JQ 操作元素、鼠标键盘事件、Cookie 操作

    今天是持续写作的第 26 / 100 天. 如果你有想要交流的想法.技术,欢迎在评论区留言. 本篇博客主要学习 Selenium 中如何利用 JavaScript 与 JQuery 操作页面元素,以及 ...

  5. TSC打印机,利用javascript实现连续扫码自动打印,配置说明

    TSC打印机,利用javascript打印配置说明 页面预览: 页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  6. python+selenium实现自动刷新网页

    Selenium是一个用于Web应用程序测试的工具,本文介绍利用python+selenium实现自动刷新网页. 一.安装 selenium pip install selenium 二.下载并导入浏 ...

  7. 利用python+selenium带上cookies自动登录bilibili

    利用python+selenium带上cookies自动登录bilibili 环境 selenium的安装 思路 第一部分:手动登录,保存cookies 第二部分:读取cookies自动登录 环境 环 ...

  8. 利用javascript onclick实现网页跳转

    学习笔记,仅供参考 转载自:利用javascript onclick跳转链接网页 <input type=button value="跳转" onclick="wi ...

  9. Qt利用JavaScript访问网页元素(百度博客下载例子)

    Qt利用JavaScript访问网页元素(百度博客下载例子)   本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业 ...

最新文章

  1. BuildIt: Visual Studio .NET 的自动生成工具
  2. 内存恶鬼drawRect
  3. React Native使用指南-原生模块
  4. mysql 云无忧ps教程_华为云数据库MySQL一键开通读写分离,无忧应对企业业务高峰情景...
  5. 函数:找出一句话中的第二个单词
  6. 基金登记过户系统相关
  7. Linux打包解包、压缩解压缩
  8. ExtJs6中利用TreePicker实现下拉树
  9. 多种方法对网页文字进行快速复制(仅供学习使用,勿践踏他人成果)
  10. 网络TDR测试软件,高分辨率TDR测试以及应用
  11. chrome浏览器 Adobe Flash 版本太旧 无法播放视频解决办法
  12. HTB-Apocalyst
  13. 【Python CI】圈复杂度 lizard
  14. Wemos D1 Mini / nodeMcu / esp8266 + GUIslice库 驱动ST7789 TFT显示屏
  15. Java实现微信授权 获取用户OpenID(一)
  16. Java设计模式——依赖倒转原则
  17. PS快速制作流血火焰和冰封字体
  18. 三、向SpringCloud注册Service服务(Restful服务)
  19. 弘辽科技:如何修改老链接不被降权。
  20. ADO数据库连接中的Persist Security Info参数的作用

热门文章

  1. Go基于共享变量的并发原理及实例 【Go语言圣经笔记】
  2. smbms(超市管理系统)源码 + 分析
  3. 淘宝中小商家该如何做好粉丝营销与运营?
  4. Android集成7z极限压缩
  5. 永磁同步电机控制系统——模型预测控制(MPC)
  6. Mysql批量插入数据问题解决和优化
  7. Apache License 2.0介绍
  8. 如何在Ubuntu 20.04上设置Mattermost
  9. hpm128无法共享打印_m126及m128打印机共享问题
  10. 任总在2018年四季度工作会议上的讲话