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

2023-05-16 10:54:57 浏览数 (2)

实现目的

利用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

0 人点赞