ホームページ  >  記事  >  バックエンド開発  >  Python と WebDriver を使用して Web ページをキャプチャし、PDF ファイルとして保存する

Python と WebDriver を使用して Web ページをキャプチャし、PDF ファイルとして保存する

王林
王林オリジナル
2023-07-08 22:55:452205ブラウズ

Python と WebDriver を使用して Web ページのスクリーンショットを実装し、PDF ファイルとして保存する

要約:
Web 開発とテストのプロセスでは、分析のために Web ページのスクリーンショットを作成する必要があることがよくあります。記録とレポート。この記事では、Python と WebDriver を使用して Web ページのスクリーンショットを撮り、そのスクリーンショットを PDF ファイルとして保存して簡単に共有したりアーカイブしたりする方法を紹介します。

1. Selenium WebDriver のインストールと構成:

  1. Python のインストール: Python 公式 Web サイト (https://www.python.org/downloads/) にアクセスしてダウンロードしてインストールします。ご使用のオペレーティング システムの Python バージョンに適しています。
  2. Selenium ライブラリのインストール: ターミナルまたはコマンド ラインを開き、次のコマンドを実行して Selenium ライブラリをインストールします: pip install selenium
  3. WebDriver のインストール: 使用しているブラウザに応じて適切な WebDriver を選択します。 。 Chrome ブラウザを使用している場合は、ChromeDriver 公式 Web サイト (https://sites.google.com/chromium.org/driver/) にアクセスして、対応するバージョンの WebDriver をダウンロードし、環境変数に追加できます。

2. Python コードを作成します:
以下は、WebDriver を使用して指定された URL の Web ページをインターセプトし、PDF ファイルとして保存する完全な Python コードの例です。

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. コード分析:

  1. webdriver.Chrome() メソッドを呼び出して Chrome ブラウザ インスタンスを作成し、chrome_options## を使用します。 # パラメータ インターフェースレスモードを設定します。
  2. driver.set_window_size() メソッドを使用して、Web ページに合わせてブラウザ ウィンドウのサイズを設定します。
  3. driver.get() メソッドを使用して、指定された URL にアクセスします。
  4. driver.save_screenshot() メソッドを使用して、現在のブラウザ ページをインターセプトし、画像ファイルとして保存します。
  5. PIL ライブラリを使用して、スクリーンショットを PDF に結合します。
4. 概要:

この記事では、Python と WebDriver を使用して Web ページのスクリーンショットを撮り、そのスクリーンショットを PDF ファイルとして保存する方法を紹介します。 WebDriver の構成と使用を通じて、Web ページのスクリーンショットを簡単に取得し、Python の画像処理ライブラリを使用して複数のスクリーンショットを PDF ファイルに結合し、Web コンテンツの完全な保存と共有を実現できます。この方法は、Web 開発およびテスト中のシナリオのデバッグ、記録、レポートに広く使用され、作業効率と精度を向上させることができます。

以上がPython と WebDriver を使用して Web ページをキャプチャし、PDF ファイルとして保存するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。