如何截取 URL 列表的屏幕截图

sce*_*phy 4 screenshot browser-addons google-chrome-extensions firefox-extensions browser-plugin

我需要保存大约 20 个 Intranet 页面的缩略图大小的屏幕截图,并每周重复一次。

我排除了使用在线服务,因为屏幕截图是商业信息。

我排除了安装应用程序的可能性,因为我的办公室同时使用 Windows 和 Mac 操作系统。我不想依赖我们中的一些人无法安装的应用程序。

我找不到接受 URL 列表的 Chrome 扩展程序。我只找到了保存一个打开页面的屏幕截图的扩展程序,而不是一批。

还有其他方法吗?

Ana*_*man 5

\n

还有其他方法吗?

\n
\n\n

您可能需要考虑在--headless(无 GUI)模式下使用 Chrome(自版本 59+ 起可用)。Firefox 从 56+ 版本开始就有类似的功能。

\n\n

结合--headlessChrome(或-headlessFirefox)中的选项,您可以使用该--screenshot选项(自 Firefox 57 起)从命令行截取网站的屏幕截图。假设您使用的是每个浏览器的当前版本,这些功能应该在 Windows 和 MacOS 上都受支持。

\n\n

Windows 上的 Chrome

\n\n

作为在 Windows 上使用 Chrome 捕获网页的示例,您可以使用以下命令来截取http://example.com的屏幕截图:

\n\n
"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe" --headless --disable-gpu --enable-logging --screenshot="C:\\path\\to\\screenshot.png" http://example.com/\n
Run Code Online (Sandbox Code Playgroud)\n\n

MacOS 上的 Chrome

\n\n

同样,您应该能够在 MacOS 上的 Chrome 中使用类似的命令:

\n\n
chrome --headless --disable-gpu --enable-logging --screenshot http://example.com/\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,简单地使用chrome(上面)似乎通常依赖于拥有适当的alias例如:

\n\n
alias chrome="/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome"\n
Run Code Online (Sandbox Code Playgroud)\n\n

其他选项

\n\n
    \n
  • --print-to-pdf \xe2\x80\x94 创建.pdf网页的版本,例如--print-to-pdf="C:\\path\\to\\output.pdf"

  • \n
  • --window-size \xe2\x80\x94 指定要渲染屏幕截图等的确切窗口大小,例如--window-size=1366,768

  • \n
  • --hide-scrollbars \xe2\x80\x94 删除可能在屏幕截图等中呈现的任何滚动条(由于视口较小)。

  • \n
\n\n

此处提供了附加开关的更新列表。

\n\n

无头 Chrome 陷阱

\n\n
    \n
  • 在 Windows 上,Chrome对路径似乎非常挑剔。为了避免奇怪的行为(或彻底失败),请确保始终指定完整路径+文件名--screenshot这尤其适用--print-to-pdf,但即使将 Chrome 放入 Windows 路径/路径并简单地使用chrome(ala MacOS)也可能会导致问题(尤其是在批处理文件中)。

  • \n
  • 各个页面需要单独的时间来呈现。例如,https://example.com的屏幕截图几乎是在测试系统上立即创建的,而https://superuser.com始终需要大约三十秒或更长时间才能呈现。

  • \n
  • --screenshot如果不使用--headless可能会导致捕获多个屏幕截图时出现问题。

  • \n
  • 屏幕截图将捕获为.png文件,无论图像扩展名如何(即无.jpg文件)。

  • \n
  • 如果您希望捕获但未捕获的内容,请尝试调整该--window-size选项。但请注意,捕获“完整”(滚动)网页可能会出现问题(至少在理论上),因此您可能需要根据情况稍后深入研究更复杂的解决方案。

  • \n
  • 捕获屏幕截图最适合更“传统”的网页。Web 应用程序可能会产生不良结果。

  • \n
\n\n
\n

我找不到接受 URL 列表的 Chrome 扩展程序。我只找到了保存一个打开页面的屏幕截图的扩展程序,而不是一批。

\n
\n\n

不幸的是,使用--headless模式并--screenshot不允许您直接指定要捕获的多个 URL(据我所知)。您可能需要创建某种脚本来实现此目标。

\n\n

例如,作为 Windows 中的强力方法,您可以简单地将相应命令的变体保存在批处理 ( .bat) 文件中,例如:

\n\n
ECHO off\n\nREM A batch file to automate downloading website screenshots\n\nECHO on\n\n"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe" --headless --disable-gpu --enable-logging --screenshot="C:\\path\\to\\screenshot1.png" http://website1.com/\n\nREM More commands here [...]\n\n"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe" --headless --disable-gpu --enable-logging --screenshot="C:\\path\\to\\screenshot20.png" http://website20.com/\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用 shell 脚本的类似方法也可能适用于 MacOS。

\n\n

当然,您可以制作一个实际读取 URL 列表(例如从文本文件)的脚本,例如使用批处理 (Windows)、Powershell (Windows)、shell 脚本 (MacOS)、Python(Windows和 MacOS)或任何其他选项可用的。

\n\n
\n

我需要保存大约 20 个 Intranet 页面的缩略图大小的屏幕截图 [...] 我排除了安装应用程序的可能性,因为我的办公室同时使用 Windows 和 Mac 操作系统。我不想依赖我们中的一些人无法安装的应用程序。

\n
\n\n

我认为您无法绕过第三方应用程序来完成此步骤。同样,--headless模式--screenshot不支持实际调整图像大小(仅支持视口,即窗口大小)。此外,Windows 没有附带用于调整图像大小的内置工具(在 MS Paint 之外)。

\n\n

作为推荐,ImageMagick可能值得研究,因为它支持Windows 和 MacOS。安装后,您可以简单地使用例如:

\n\n
magick screenshot1.png -resize 50% thumbnail-screenshot1.png\n
Run Code Online (Sandbox Code Playgroud)\n\n

调整图像大小(尽管还有更多潜在的选项可用)。

\n\n

请注意,上面的命令适用于当前版本的 ImageMagick 7.x+。对于 ImageMagick 的旧版本,您可能需要使用ieconvert来代替magick

\n\n
convert screenshot1.png -resize 50% thumbnail-screenshot1.png\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以将这些(或任何类似的命令)作为捕获屏幕截图本身的脚本的一部分或作为单独的后处理脚本的一部分。

\n