【问题标题】:how to take screenshot of youtube page without opening the browser in python or R?如何在不使用 python 或 R 打开浏览器的情况下截取 youtube 页面?
【发布时间】:2019-10-05 16:31:54
【问题描述】:

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

对此的任何帮助都会很棒。

提前谢谢你。

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

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

python 中的代码 从硒导入网络驱动程序 驱动程序=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

【问题讨论】:

  • Selenium 是笨重的,但是当没有更简单的工作时,我在各种情况下都取得了巨大的成功。仅供参考,因为它只是一个后端,您也可以使用 Rselenium 在 R 中访问它。故障排除的第一步是确保 webdriver 确实显示了您想要的内容(即,如果浏览器会话实际上显示为黑色或错误,那么显然也会出现截图)。
  • 要获得更多帮助,您至少可以发布错误吗?
  • @JohnColby - 我已经附上了我得到的输出和我想要的输出。

标签: python r selenium phantomjs screenshot


【解决方案1】:

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

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")

【讨论】:

  • R 有一个贡献的包“decapitated”,用于无头模式的编程使用。
  • options.headless = True
猜你喜欢
  • 2016-05-10
  • 2012-01-26
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 2018-08-04
  • 2021-01-13
  • 2022-06-30
  • 1970-01-01
相关资源
最近更新 更多