Utilisez Python et WebDriver pour prendre des captures d'écran de pages Web et les enregistrer sous forme de fichiers PDF
Résumé :
Dans le processus de développement et de test Web, il est souvent nécessaire de capturer des pages Web à des fins d'analyse, d'enregistrement et de création de rapports. Cet article explique comment utiliser Python et WebDriver pour prendre des captures d'écran de pages Web et enregistrer les captures d'écran sous forme de fichiers PDF pour un partage et un archivage faciles.
1. Installez et configurez Selenium WebDriver :
2. Écrivez du code Python :
Ce qui suit est un exemple de code Python complet, utilisant WebDriver pour intercepter la page Web de l'URL spécifiée et l'enregistrer sous forme de fichier 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. Analyse du code :
webdriver.Chrome()
pour créer une instance de navigateur Chrome et utilisez le paramètre chrome_options
pour configurer le mode sans interface. . webdriver.Chrome()
方法创建Chrome浏览器实例,并使用chrome_options
参数配置无界面模式。driver.set_window_size()
方法设置浏览器窗口大小以适应网页。driver.get()
方法访问指定网址。driver.save_screenshot()
方法截取当前浏览器页面,并保存为图片文件。PIL
driver.set_window_size()
pour définir la taille de la fenêtre du navigateur afin qu'elle s'adapte à la page Web. Utilisez la méthode driver.get()
pour accéder à l'URL spécifiée.
driver.save_screenshot()
pour capturer la page actuelle du navigateur et l'enregistrer en tant que fichier image. 🎜🎜Utilisez la bibliothèque PIL
pour fusionner des captures d'écran en PDF. 🎜🎜🎜4. Résumé : 🎜Cet article explique comment utiliser Python et WebDriver pour prendre des captures d'écran de pages Web et enregistrer les captures d'écran sous forme de fichiers PDF. Grâce à la configuration et à l'utilisation de WebDriver, nous pouvons facilement prendre des captures d'écran de pages Web et utiliser la bibliothèque de traitement d'images de Python pour fusionner plusieurs captures d'écran dans des fichiers PDF, obtenant ainsi une préservation et un partage complets du contenu Web. Cette méthode peut être largement utilisée dans les scénarios de débogage, d'enregistrement et de reporting pendant le développement et les tests Web afin d'améliorer l'efficacité et la précision du travail. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!