如何在不打开 python 或 R 中的浏览器的情况下截取 youtube 页面的屏幕截图?

how to take screenshot of youtube page without opening the browser in python or R?

我想截图几个属于 youtube 的 link。我想截取将播放视频的网页的屏幕截图,然后截取屏幕截图或不播放而截取屏幕截图,但所有这一切都必须使用 python 或 R 进行,但他们不应该打开浏览器。这一切都应该发生在后端。

这方面的任何帮助都会很棒。

提前致谢。

我试过打开 link 并使用 R 和 python 截取屏幕截图,它确实在不打开浏览器的情况下截取了屏幕截图。但是视频截图是黑色的,有我不想要的错误。

R 中的代码 图书馆(网页截图) webshot("https://www.youtube.com/watch?v=Nym5stAJAt8","test.png")

python 中的代码 从硒导入网络driver driver=webdriver.PhantomJS() driver.set_window_size(1120, 550) driver.get("https://www.youtube.com/watch?v=Nym5stAJAt8") driver.save_screenshot("screenshot.png")

the output I get the output I want

您可以使用chrome的无头模式。在调用 chrome 的驱动程序之前,创建选项的选项对象然后作为参数发送给驱动程序。然后你可以 运行 在后端甚至一些没有任何屏幕的环境中包含 docker 容器的代码。 但要注意设置 window 大小。这会影响您的截图结果。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options() #
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=1920x1080")
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
driver.get_screenshot_as_file("capture.png")

这可能与以下因素有关:

  1. 运行 从命令行编写代码或在后台自动安排代码。

  2. 您的 运行 机器的显卡类型和驱动程序。

对于 1) 如果我从 windows10 命令行启动我的代码,我总是可以获得正确的捕获图片。 如果是从后台调度,可能不会成功。

对于 2) 我尝试通过 Python 的 'pywin32' 和 'pyscreenshot' 库安排我机器的 win10 桌面的后端截图。结果:我的一些机器运行良好,而另一些则在所有黑色屏幕截图中失败。