前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium库实现网页批量打印为PDF

selenium库实现网页批量打印为PDF

作者头像
ph0ebus
发布2023-05-16 10:54:57
1.8K0
发布2023-05-16 10:54:57
举报
实现目的

利用python的selenium库实现批量网页打印为PDF

预备知识
  1. selenium库的简单了解
  2. 浏览器的启动参数
  3. re库函数了解(re.complie, re.findall)
  4. js调用浏览器窗口
代码实现
代码语言:javascript
复制
import json
import re
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--enable-print-browser')  # 启用PrintBrowser模式,其中所有内容都呈现为打印
chrome_options.add_argument('--kiosk-printing')  # 在打印预览中自动按下打印按钮
settings = {
    "recentDestinations": [
    {
        "id": "Save as PDF",
        "origin": "local"
    }
    ],
    "selectedDestinationId": "Save as PDF",
    "version": 2
}
prefs = {
    'printing.print_preview_sticky_settings.appState': json.dumps(settings),
    'savefile.default_directory': 'C:\\Users\\admin\\Desktop\\pdf'  # 下载文件保存的路径
}
chrome_options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(options=chrome_options)
for num in range(1,1854):
    url = 'https://tttang.com/archive/%d/'%num  # 通过对网站url特点分析,遍历出每篇文章,也可以通过其他特点遍历出各分类的文章
    driver.get(url)
    a = driver.page_source  # 获取网页源代码
    if '404 not found' not in a and '点击跳转' not in a:  # 防止无效的404页面
        title1 = re.compile("<title>(.*)</title>")  # 通过正则表达式定位到文章标题
        title = title1.findall(a)[0][:-6]  # 切片去除无意义的后缀
        js = "document.title='"+title+"';window.print();"  # 保存文件的文件名是文章标题,使用js的window.print()调出打印窗口,避免使用ctrl+P
        driver.execute_script(js)

本文采用CC-BY-SA-3.0协议,转载请注明出处 Author: ph0ebus

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现目的
  • 预备知识
  • 代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档