Gunakan Python dan WebDriver untuk menangkap halaman web dan menyimpannya sebagai fail PDF

王林
Lepaskan: 2023-07-08 22:56:01
asal
2317 orang telah melayarinya

Gunakan Python dan WebDriver untuk mengambil tangkapan skrin halaman web dan menyimpannya sebagai fail PDF

Abstrak:
Dalam proses pembangunan dan ujian web, selalunya perlu untuk tangkapan skrin halaman web untuk analisis, rakaman dan pelaporan. Artikel ini akan memperkenalkan cara menggunakan Python dan WebDriver untuk mengambil tangkapan skrin halaman web dan menyimpan tangkapan skrin sebagai fail PDF untuk perkongsian dan pengarkiban yang mudah.

1. Pasang dan konfigurasikan Selenium WebDriver:

  1. Pasang Python: Lawati tapak web rasmi Python (https://www.python.org/downloads/) untuk memuat turun dan memasang versi Python yang sesuai untuk sistem pengendalian anda.
  2. Pasang Perpustakaan Selenium: Buka terminal atau baris arahan dan jalankan arahan berikut untuk memasang perpustakaan Selenium: pip install selenium
  3. Pasang WebDriver: Pilih WebDriver yang sesuai mengikut penyemak imbas yang anda gunakan. Jika anda menggunakan penyemak imbas Chrome, anda boleh pergi ke tapak web rasmi ChromeDriver (https://sites.google.com/chromium.org/driver/) untuk memuat turun versi WebDriver yang sepadan dan menambahkannya pada pembolehubah persekitaran.

2. Tulis kod Python:
Berikut ialah contoh kod Python yang lengkap, menggunakan WebDriver untuk memintas halaman web URL yang ditentukan dan menyimpannya sebagai fail 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")
Salin selepas log masuk

3 Analisis kod:

  1. Panggil kaedah webdriver.Chrome() untuk mencipta tika penyemak imbas Chrome dan gunakan parameter chrome_options untuk mengkonfigurasi mod tanpa antara muka . webdriver.Chrome()方法创建Chrome浏览器实例,并使用chrome_options参数配置无界面模式。
  2. 使用driver.set_window_size()方法设置浏览器窗口大小以适应网页。
  3. 使用driver.get()方法访问指定网址。
  4. 使用driver.save_screenshot()方法截取当前浏览器页面,并保存为图片文件。
  5. 使用PIL
  6. Gunakan kaedah driver.set_window_size() untuk menetapkan saiz tetingkap penyemak imbas agar muat dengan halaman web.

Gunakan kaedah driver.get() untuk mengakses URL yang ditentukan.

Gunakan kaedah driver.save_screenshot() untuk menangkap halaman penyemak imbas semasa dan menyimpannya sebagai fail imej. 🎜🎜Gunakan pustaka PIL untuk menggabungkan tangkapan skrin ke dalam PDF. 🎜🎜🎜4 Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan Python dan WebDriver untuk mengambil tangkapan skrin halaman web dan menyimpan tangkapan skrin sebagai fail PDF. Melalui konfigurasi dan penggunaan WebDriver, kami boleh mengambil tangkapan skrin halaman web dengan mudah, dan menggunakan perpustakaan pemprosesan imej Python untuk menggabungkan berbilang tangkapan skrin ke dalam fail PDF, mencapai pemeliharaan lengkap dan perkongsian kandungan web. Kaedah ini boleh digunakan secara meluas dalam penyahpepijatan, merekod dan senario pelaporan semasa pembangunan dan ujian web untuk meningkatkan kecekapan dan ketepatan kerja. 🎜

Atas ialah kandungan terperinci Gunakan Python dan WebDriver untuk menangkap halaman web dan menyimpannya sebagai fail PDF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan