+
80
-

python Selenium如何自动录制网页保存为视频?

python Selenium如何自动录制网页保存为视频?


网友回复

+
0
-

要通过Python将网页运行结果保存为视频,您可以使用Selenium和OpenCV等库来模拟浏览器行为并截取屏幕截图,然后使用FFmpeg等工具将截图合成为视频。以下是一个基本的示例代码:

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import cv2
import numpy as np
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

# 设置浏览器选项
# options = Options()
# options.add_argument("--disable-notifications")
# options.add_argument("--disable-extensions")
# options.add_argument("--disable-gpu")
# options.add_argument("--no-sandbox")
# options.add_argument("--disable-dev-shm-usage")
# options.add_argument("--mute-audio")
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--headless")
chromeOptions.add_argument("--remote-debugging-port=9222")
chromeOptions.add_argument('--no-sandbox')
browser = webdriver.Chrome('/usr/bin/chromedriver',chrome_options=chromeOptions)


# 启动浏览器并打开网页
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chromeOptions)
driver.get("https://www.baidu.com/")

# 获取页面宽度和高度
width = driver.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")

# 设置视频编码器
fourcc = cv2.VideoWriter_fourcc(*"mp4v")

# 创建视频写入器
video_writer = cv2.VideoWriter("/data/wwwroot/default/Data/output.mp4", fourcc, 30.0, (width, height))

# 循环截取屏幕截图并写入视频
for i in range(300):
    # 截取屏幕截图
    screenshot = driver.get_screenshot_as_png()
    screenshot = np.frombuffer(screenshot, np.uint8)
    screenshot = cv2.imdecode(screenshot, cv2.IMREAD_COLOR)
    screenshot = screenshot[:, :, ::-1]

    # 写入视频帧
    video_writer.write(screenshot)

    # 等待页面加载
    time.sleep(0.1)

# 关闭浏览器和视频写入器
driver.quit()
video_writer.release()	

在上面的代码中,我们首先启动了Chrome浏览器并打开了指定的网页。然后,我们使用Selenium库获取了网页的宽度和高度,并使用OpenCV库创建了一个视频写入器。接下来,我们循环截取屏幕截图并写入视频帧,每隔0.1秒截取一次。最后,我们关闭了浏览器和视频写入器。 需要注意的是,此方法可能需要较长的时间来截取足够的屏幕截图以生成视频。此外,FFmpeg等工具需要额外安装和配置。

我知道答案,我要回答