我需要保存大约 20 个内联网页面的缩略图大小的屏幕截图并每周重复。
我排除了使用在线服务的可能性,因为截图是商业信息。
我排除了安装应用程序的可能性,因为我的办公室同时使用 Windows 和 Mac OS。我不想依赖我们中的一些人无法安装的应用程序。
我找不到接受 URL 列表的 Chrome 扩展程序。我只找到了可以保存单个打开页面的屏幕截图的扩展程序,而不是批量保存。
还有其他方法吗?
答案1
还有其他方法吗?
您可能需要考虑在--headless
无 GUI 模式下使用 Chrome(自版本 59 起可用)。Firefox 自版本 56 起具有类似功能。
结合--headless
Chrome(或-headless
Firefox)中的选项,您可以使用--screenshot
选项(自 Firefox 57 起) 从命令行截取网站的屏幕截图。假设您使用的是每个浏览器的当前版本,则 Windows 和 MacOS 都应该支持这些功能。
Windows 上的 Chrome
以在 Windows 上使用 Chrome 截取网页为例,你可以使用以下命令截取以下网页的屏幕截图:http://example.com:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --enable-logging --screenshot="C:\path\to\screenshot.png" http://example.com/
MacOS 上的 Chrome
同样,您应该能够在 MacOS 上的 Chrome 中使用类似的命令:
chrome --headless --disable-gpu --enable-logging --screenshot http://example.com/
请注意,简单地使用chrome
(以上)似乎通常依赖于具有适当的alias
例如:
alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
其他选项
--打印到 PDF— 创建
.pdf
网页版本,例如--print-to-pdf="C:\path\to\output.pdf"
--窗口大小— 指定用于渲染屏幕截图等的精确窗口大小,例如
--window-size=1366,768
--隐藏滚动条— 删除可能在屏幕截图等中呈现的任何滚动条(由于视口较小)。
有可用的附加开关的更新列表这里。
Headless Chrome 的陷阱
在 Windows 上,Chrome 似乎极其对路径很挑剔。为了避免奇怪的行为(或彻底失败),请确保始终指定完整路径+文件名
--screenshot
。这特别适用于--print-to-pdf
,但即使将 Chrome 放入 Windows PATH/Path 中并简单使用chrome
(ala MacOS)也可能会导致问题(尤其是在批处理文件中)。各个页面需要不同的时间来渲染。例如,https://example.com在测试系统上几乎是瞬间创建的,而https://superuser.com渲染需要大约三十秒或更长时间。
使用
--screenshot
without--headless
可能会导致捕获多个屏幕截图的问题。屏幕截图被捕获为
.png
文件,无论图像扩展名是什么(即没有.jpg
文件)。如果您希望捕获的内容未被捕获,请尝试调整选项
--window-size
。但请注意,捕获“完整”(滚动)网页可能会有问题(至少在理论上),因此您可能需要根据具体情况稍后深入研究更复杂的解决方案。截取屏幕截图最适合“传统”网页。网络应用程序可能会产生不良结果。
我找不到接受 URL 列表的 Chrome 扩展程序。我只找到了可以保存单个打开页面的屏幕截图的扩展程序,而不是批量保存。
不幸的是,使用--headless
模式--screenshot
不允许您直接指定要捕获的多个 URL(据我所知)。您可能需要创建某种脚本来实现此目标。
例如,作为 Windows 中的强力方法,您可以简单地将相应命令的变体保存在批处理(.bat
)文件中,例如:
ECHO off
REM A batch file to automate downloading website screenshots
ECHO on
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --enable-logging --screenshot="C:\path\to\screenshot1.png" http://website1.com/
REM More commands here [...]
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --enable-logging --screenshot="C:\path\to\screenshot20.png" http://website20.com/
使用 shell 脚本的类似方法也可能适用于 MacOS。
当然,你可以编写一个脚本,实际读取 URL 列表(例如从文本文件中读取),例如使用批处理(Windows)、Powershell(Windows)、shell 脚本(MacOS)、Python(视窗和 MacOS) 或任何其他可用选项。
我需要保存大约 20 个内联网页面的缩略图大小的屏幕截图 [...] 我排除了安装应用程序的可能性,因为我的办公室同时使用 Windows 和 Mac OS。我不想依赖我们中的一些人无法安装的应用程序。
我认为您无法绕过第三方应用程序来完成此步骤。同样,--headless
模式--screenshot
不支持实际调整图像大小(仅支持视口,即窗口大小)。此外,Windows 没有内置工具来调整图像大小(MS Paint 除外)。
作为建议,图像魔术师可能值得研究,因为它支持Windows 和 MacOS。安装后,您可以简单使用例如:
magick screenshot1.png -resize 50% thumbnail-screenshot1.png
调整图像大小(尽管还有更多可用的潜在选项)。
请注意,上述命令适用于 ImageMagick 7.x+ 的当前版本。对于旧版本的 ImageMagick,您可能希望使用ieconvert
代替magick
:
convert screenshot1.png -resize 50% thumbnail-screenshot1.png
您可以将这些(或任何类似的命令)作为捕获屏幕截图本身的脚本的一部分或作为单独的后期处理脚本的一部分。
答案2
也找过这样的软件,最后还是自己写了脚本 https://github.com/rytsikau/eeScreen