Vous pouvez utiliser un écran virtuel pour exécuter le navigateur sur l'écran virtuel et prendre des captures d'écran, afin que cela n'affecte pas l'affichage de l'écran actuel.
L'implémentation spécifique peut utiliser les bibliothèques Xvfb et pyvirtualdisplay. Xvfb est un serveur virtuel X11 qui crée un écran virtuel en mémoire, et pyvirtualdisplay est une bibliothèque Python qui permet de démarrer et de contrôler Xvfb à partir du code Python.
Ce qui suit est un exemple :
from pyvirtualdisplay import Display from selenium import webdriver # 启动虚拟屏幕 display = Display(visible=0, size=(800, 600)) display.start() # 创建浏览器实例并访问页面 browser = webdriver.Chrome() browser.get('https://www.google.com') # 截图并保存 browser.save_screenshot('screenshot.png') # 关闭浏览器和虚拟屏幕 browser.quit() display.stop()
Dans cet exemple, nous démarrons d'abord l'écran virtuel, puis créons une instance de navigateur Chrome et visitons la page d'accueil de Google. Ensuite, nous utilisons la méthode save_screenshot pour prendre une capture d'écran de la page et l'enregistrer dans un fichier local. Enfin, nous avons fermé le navigateur et l'écran virtuel.
Veuillez noter que la taille de l'écran virtuel doit être la même que la taille de la fenêtre du navigateur, sinon la capture d'écran pourrait être incomplète. Dans le code, nous précisons la taille de l'écran virtuel à 800x600, que vous pouvez modifier en fonction de la situation réelle.
Q&A
Si vous avez trop de tâches, n'activez pas beaucoup d'écrans virtuels. Cela consommera-t-il beaucoup de mémoire ? Oui, l'ouverture de plusieurs écrans virtuels occupera beaucoup de mémoire ?
Xvfb
import os import time from selenium import webdriver from pyvirtualdisplay import Display from PIL import Image # 设置虚拟屏幕分辨率 display = Display(visible=0, size=(1920, 1080)) display.start() # 启动浏览器 browser = webdriver.Chrome() # 打开网页 browser.get('https://www.baidu.com') # 等待页面加载完成 time.sleep(5) # 截图 browser.save_screenshot('screenshot.png') # 退出浏览器 browser.quit() # 关闭虚拟屏幕 display.stop() # 打开截图 Image.open('screenshot.png').show()
Dans cet exemple, nous utilisons la bibliothèque pyvirtualdisplay pour créer un écran virtuel, le navigateur Chrome et Selenium pour ouvrir des pages Web et des captures d'écran, et enfin utilisons la bibliothèque Pillow pour ouvrir captures d'écran. Notez que cette méthode doit être exécutée dans un environnement Linux ou macOS.
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!