Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie Python und WebDriver, um Webseiten zu erfassen und als PDF-Dateien zu speichern

Verwenden Sie Python und WebDriver, um Webseiten zu erfassen und als PDF-Dateien zu speichern

王林
王林Original
2023-07-08 22:55:452311Durchsuche

Verwenden Sie Python und WebDriver, um Screenshots von Webseiten zu erstellen und diese als PDF-Dateien zu speichern.

Zusammenfassung:
Im Prozess der Webentwicklung und des Webtests ist es häufig erforderlich, Screenshots von Webseiten zur Analyse, Aufzeichnung und Berichterstellung zu erstellen. In diesem Artikel erfahren Sie, wie Sie mit Python und WebDriver Screenshots von Webseiten erstellen und die Screenshots zur einfachen Weitergabe und Archivierung als PDF-Dateien speichern.

1. Installieren und konfigurieren Sie Selenium WebDriver:

  1. Installieren Sie Python: Besuchen Sie die offizielle Python-Website (https://www.python.org/downloads/), um die für Ihr Betriebssystem geeignete Python-Version herunterzuladen und zu installieren.
  2. Selenium-Bibliothek installieren: Öffnen Sie ein Terminal oder eine Befehlszeile und führen Sie den folgenden Befehl aus, um die Selenium-Bibliothek zu installieren: pip install selenium
  3. WebDriver installieren: Wählen Sie den entsprechenden WebDriver entsprechend dem von Ihnen verwendeten Browser aus. Wenn Sie den Chrome-Browser verwenden, können Sie auf der offiziellen ChromeDriver-Website (https://sites.google.com/chromium.org/driver/) die entsprechende Version von WebDriver herunterladen und zu den Umgebungsvariablen hinzufügen.

2. Python-Code schreiben:
Das Folgende ist ein vollständiges Python-Codebeispiel, bei dem WebDriver verwendet wird, um die Webseite der angegebenen URL abzufangen und als PDF-Datei zu speichern.

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. Code-Analyse:

  1. Rufen Sie die Methode webdriver.Chrome() auf, um eine Chrome-Browserinstanz zu erstellen, und verwenden Sie den Parameter chrome_options, um den schnittstellenlosen Modus zu konfigurieren . webdriver.Chrome()方法创建Chrome浏览器实例,并使用chrome_options参数配置无界面模式。
  2. 使用driver.set_window_size()方法设置浏览器窗口大小以适应网页。
  3. 使用driver.get()方法访问指定网址。
  4. 使用driver.save_screenshot()方法截取当前浏览器页面,并保存为图片文件。
  5. 使用PIL
  6. Verwenden Sie die Methode driver.set_window_size(), um die Größe des Browserfensters so einzustellen, dass sie zur Webseite passt.

Verwenden Sie die Methode driver.get(), um auf die angegebene URL zuzugreifen.

Verwenden Sie die Methode driver.save_screenshot(), um die aktuelle Browserseite zu erfassen und als Bilddatei zu speichern. 🎜🎜Verwenden Sie die PIL-Bibliothek, um Screenshots in PDF zusammenzuführen. 🎜🎜🎜4. Zusammenfassung: 🎜In diesem Artikel wird erläutert, wie Sie mit Python und WebDriver Screenshots von Webseiten erstellen und die Screenshots als PDF-Dateien speichern. Durch die Konfiguration und Verwendung von WebDriver können wir ganz einfach Screenshots von Webseiten erstellen und die Bildverarbeitungsbibliothek von Python verwenden, um mehrere Screenshots in PDF-Dateien zusammenzuführen und so eine vollständige Aufbewahrung und gemeinsame Nutzung von Webinhalten zu erreichen. Diese Methode kann häufig beim Debuggen, Aufzeichnen und Berichten von Szenarien während der Webentwicklung und beim Testen eingesetzt werden, um die Arbeitseffizienz und -genauigkeit zu verbessern. 🎜

Das obige ist der detaillierte Inhalt vonVerwenden Sie Python und WebDriver, um Webseiten zu erfassen und als PDF-Dateien zu speichern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn