Maison  >  Article  >  développement back-end  >  Utilisez Python et WebDriver pour capturer des pages Web et les enregistrer sous forme de fichiers PDF

Utilisez Python et WebDriver pour capturer des pages Web et les enregistrer sous forme de fichiers PDF

王林
王林original
2023-07-08 22:55:452206parcourir

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 :

  1. Installez Python : visitez le site officiel de Python (https://www.python.org/downloads/) pour télécharger et installer la version Python adaptée à votre système d'exploitation.
  2. Installer la bibliothèque Selenium : ouvrez un terminal ou une ligne de commande et exécutez la commande suivante pour installer la bibliothèque Selenium : pip install selenium
  3. Installer WebDriver : choisissez le WebDriver approprié en fonction du navigateur que vous utilisez. Si vous utilisez le navigateur Chrome, vous pouvez vous rendre sur le site officiel de ChromeDriver (https://sites.google.com/chromium.org/driver/) pour télécharger la version correspondante de WebDriver et l'ajouter aux variables d'environnement.

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 :

  1. Appelez la méthode 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参数配置无界面模式。
  2. 使用driver.set_window_size()方法设置浏览器窗口大小以适应网页。
  3. 使用driver.get()方法访问指定网址。
  4. 使用driver.save_screenshot()方法截取当前浏览器页面,并保存为图片文件。
  5. 使用PIL
  6. Utilisez la méthode 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.

Utilisez la méthode 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn