+
104
-

回答

1、sudo yum install firefox -y

2、安装python3l selenium

sudo yum install python3 python3-pip -ypip3 install selenium

3、下载centos7适配的geckodriver

# 创建一个目录用于存放驱动
mkdir -p ~/webdrivers

# 下载最新版本的 Geckodriver (以 v0.33.0 为例)
cd ~/webdrivers
wget https://github.com/mozilla/geckodriver/releases/download/v0.33.0/geckodriver-v0.33.0-linux64.tar.gz

# 解压文件
tar -xvzf geckodriver-v0.33.0-linux64.tar.gz

# 移动到系统路径
sudo mv geckodriver /usr/local/bin/

# 设置执行权限
sudo chmod +x /usr/local/bin/geckodriver

4、测试截屏代码

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.firefox.service import Service as FirefoxService
from selenium.webdriver.firefox.options import Options as FirefoxOptions
import time

def take_full_page_screenshot(url, output_path):
    firefox_options = FirefoxOptions()
    firefox_options.add_argument("--headless")
    # 如果 Firefox 未在默认路径中,可设置二进制路径,例如:
    # firefox_options.binary_location = '/usr/bin/firefox'
    
    service = FirefoxService(executable_path="/usr/local/bin/geckodriver")
    driver = webdriver.Firefox(service=service, options=firefox_options)
    
    try:
        driver.get(url)
        time.sleep(2)  # 等待页面加载
        
        # 隐藏滚动条(通过注入 CSS)
        driver.execute_script("""
            document.querySelector('html').style.overflow = 'hidden';
            document.querySelector('body').style.overflow = 'hidden';
            var style = document.createElement('style');
            style.type = 'text/css';
            style.innerHTML = `
                * {
                    -ms-overflow-style: none !important;
                    scrollbar-width: none !important;
                }
                *::-webkit-scrollbar {
                    display: none !important;
                }
            `;
            document.head.appendChild(style);
        """)
        
        # 获取页面的实际宽度和高度
        required_width = driver.execute_script('return document.documentElement.scrollWidth')
        required_height = driver.execute_script('return document.documentElement.scrollHeight')
        
        # 调整窗口尺寸以包含全部内容
        driver.set_window_size(required_width, required_height)
        time.sleep(1)  # 等待窗口调整
        
        # 截取并保存截图
        driver.save_screenshot(output_path)
        print(f"Screenshot saved as {output_path}")
        print(f"Page dimensions: {required_width}x{required_height}")
        print(f"<img src='{output_path}' />")
        
    except Exception as e:
        print(f"Error taking screenshot: {str(e)}")
    finally:
        driver.quit()

if __name__ == "__main__":
    url = "https://www.qq.com"
    output_path = "ff_screenshot2.png"
    take_full_page_screenshot(url, output_path)

网友回复

我知道答案,我要回答