Gunakan Python dan WebDriver untuk mengambil tangkapan skrin halaman web dan menyimpannya sebagai fail PDF
Abstrak:
Dalam proses pembangunan dan ujian web, selalunya perlu untuk tangkapan skrin halaman web untuk analisis, rakaman dan pelaporan. Artikel ini akan memperkenalkan cara menggunakan Python dan WebDriver untuk mengambil tangkapan skrin halaman web dan menyimpan tangkapan skrin sebagai fail PDF untuk perkongsian dan pengarkiban yang mudah.
1. Pasang dan konfigurasikan Selenium WebDriver:
2. Tulis kod Python:
Berikut ialah contoh kod Python yang lengkap, menggunakan WebDriver untuk memintas halaman web URL yang ditentukan dan menyimpannya sebagai fail PDF.
from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.chrome.options import Options from selenium.common.exceptions import WebDriverException # 设置Chrome浏览器选项 chrome_options = Options() chrome_options.add_argument("--headless") # 无界面模式 chrome_options.add_argument("--disable-gpu") def save_webpage_as_pdf(url, save_path): try: # 创建浏览器实例 driver = webdriver.Chrome(options=chrome_options) # 调整窗口大小以适应网页 driver.set_window_size(1280, 800) # 访问网页 driver.get(url) # 等待页面加载完成 driver.implicitly_wait(5) # 获取网页高度 total_height = driver.execute_script("return document.body.scrollHeight") # 将页面切成多个视口,每个视口高度为800 viewports = int(total_height / 800) + 1 # 初始化PDF打印选项 driver.execute_script("document.body.style.webkitPrintColorAdjust='exact'") driver.execute_script("document.body.style.background='white'") driver.execute_script("window.scrollTo(0, 0)") # 逐个截取每个视口并保存为PDF for i in range(viewports): # 设置视口位置,每次向下滚动800像素 driver.execute_script(f"window.scrollTo(0, {i * 800})") # 截图并保存为图片文件 driver.save_screenshot(f"{save_path}_{i}.png") # 关闭浏览器 driver.quit() # 使用Python库将截图合并为PDF from PIL import Image image_files = [f"{save_path}_{i}.png" for i in range(viewports)] images = [Image.open(img) for img in image_files] images[0].save(f"{save_path}.pdf", "PDF", save_all=True, append_images=images[1:]) # 删除临时图片文件 import os for img in image_files: os.remove(img) print(f"截图成功,并保存为PDF文件:{save_path}.pdf") except WebDriverException as e: print(f"截图失败:{e}") # 调用截图函数 save_webpage_as_pdf("https://www.example.com", "example_webpage")
3 Analisis kod:
webdriver.Chrome()
untuk mencipta tika penyemak imbas Chrome dan gunakan parameter chrome_options
untuk mengkonfigurasi mod tanpa antara muka . webdriver.Chrome()
方法创建Chrome浏览器实例,并使用chrome_options
参数配置无界面模式。driver.set_window_size()
方法设置浏览器窗口大小以适应网页。driver.get()
方法访问指定网址。driver.save_screenshot()
方法截取当前浏览器页面,并保存为图片文件。PIL
driver.set_window_size()
untuk menetapkan saiz tetingkap penyemak imbas agar muat dengan halaman web. Gunakan kaedah driver.get()
untuk mengakses URL yang ditentukan.
driver.save_screenshot()
untuk menangkap halaman penyemak imbas semasa dan menyimpannya sebagai fail imej. 🎜🎜Gunakan pustaka PIL
untuk menggabungkan tangkapan skrin ke dalam PDF. 🎜🎜🎜4 Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan Python dan WebDriver untuk mengambil tangkapan skrin halaman web dan menyimpan tangkapan skrin sebagai fail PDF. Melalui konfigurasi dan penggunaan WebDriver, kami boleh mengambil tangkapan skrin halaman web dengan mudah, dan menggunakan perpustakaan pemprosesan imej Python untuk menggabungkan berbilang tangkapan skrin ke dalam fail PDF, mencapai pemeliharaan lengkap dan perkongsian kandungan web. Kaedah ini boleh digunakan secara meluas dalam penyahpepijatan, merekod dan senario pelaporan semasa pembangunan dan ujian web untuk meningkatkan kecekapan dan ketepatan kerja. 🎜Atas ialah kandungan terperinci Gunakan Python dan WebDriver untuk menangkap halaman web dan menyimpannya sebagai fail PDF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!