Мне нужно сохранить скриншоты размером с миниатюру примерно на 20 страницах интранета и повторять каждую неделю.

Я исключил использование онлайн-сервиса, потому что на скриншотах есть деловая информация.

Я исключил установку приложения, потому что мой офис использует как Windows, так и Mac OS. Я не хотел полагаться на приложение, которое некоторые из нас не могут установить.

Я не смог найти расширение Chrome, которое принимает список URL-адресов. Я нашел только расширения, которые сохраняют скриншот одной открытой страницы, а не пакета.

Есть ли другие способы?

1 ответ1

0

Есть ли другие способы?

Возможно, вы захотите использовать Chrome в режиме --headless (без графического интерфейса) (доступно с версии 59+). Firefox имеет аналогичную функцию с версии 56+.

В сочетании с параметром --headless в Chrome (или -headless в Firefox) вы можете использовать параметр --screenshot (начиная с Firefox 57), чтобы делать снимки экрана веб-сайта из командной строки. Эти функции должны поддерживаться как в Windows, так и в MacOS, при условии, что вы используете текущие версии каждого браузера.

Chrome на Windows

В качестве примера использования Chrome в Windows для захвата веб-страницы вы можете использовать следующую команду, чтобы сделать снимок экрана, например, 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/

Chrome на MacOS

Точно так же вы должны быть в состоянии использовать аналогичную команду с Chrome на MacOS:

chrome --headless --disable-gpu --enable-logging --screenshot http://example.com/

Обратите внимание, что простое использование chrome (см. Выше), как правило, зависит от наличия соответствующего alias например:

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"

Дополнительные опции

  • --print-to-pdf - создает версию веб-страницы в .pdf например --print-to-pdf="C:\path\to\output.pdf"

  • --window-size - указать точный размер окна для отображения скриншотов и т. д., например, --window-size=1366,768

  • --hide-scrollbars - удаляет все полосы прокрутки, которые в противном случае могли бы отображаться на скриншоте и т. д. (из-за небольшого окна просмотра).

Обновленный список дополнительных переключателей доступен здесь.

Безголовые хромовые ловушки

  • В Windows Chrome кажется очень требовательным к путям. Чтобы избежать странного поведения (или прямых сбоев), всегда указывайте полный путь + имя файла. Это относится, в частности, к --screenshot и --print-to-pdf , но даже включение Chrome в путь / путь Windows и простое использование chrome (например, MacOS) может вызвать проблемы (особенно в пакетных файлах).

  • Отдельные страницы требуют отдельного времени для рендеринга. Например, снимок экрана https://example.com был создан почти мгновенно в моей тестовой системе, в то время как https://superuser.com постоянно занимал около тридцати секунд или дольше для визуализации.

  • Использование --screenshot без --headless может вызвать проблемы с захватом нескольких снимков экрана.

  • Снимки экрана записываются в виде файлов .png , независимо от расширения изображения (т.е. без файлов .jpg ).

  • Если есть контент, который вы хотите захватить, который не был захвачен, попробуйте настроить параметр --window-size . Тем не менее, обратите внимание, что захват "полных" (прокручиваемых) веб-страниц может быть проблематичным (по крайней мере, теоретически), поэтому вам, возможно, придется искать более сложные решения позже в зависимости от обстоятельств.

  • Захват скриншотов лучше всего работает с более "традиционными" веб-страницами. «Веб-приложения» могут привести к нежелательным результатам.

Я не смог найти расширение Chrome, которое принимает список URL-адресов. Я нашел только расширения, которые сохраняют скриншот одной открытой страницы, а не пакета.

К сожалению, использование режимов --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/

Подобный подход с использованием сценариев оболочки, вероятно, будет работать и в MacOS.

Конечно, вы могли бы создать скрипт, который на самом деле считывал бы список URL (скажем, из текстового файла), например, с помощью Batch (Windows), Powershell (Windows), Shell Scripting (MacOS), Python (Windows и MacOS) или любым другим варианты доступны.

Мне нужно сохранить скриншоты размером с миниатюру примерно на 20 страницах интранета [...] Я исключил установку приложения, потому что мой офис использует как Windows, так и Mac OS. Я не хотел полагаться на приложение, которое некоторые из нас не могут установить.

Я не думаю, что вы сможете обойти стороннее приложение для этого шага. Опять же, режим --headless с --screenshot не поддерживает фактическое изменение размера изображений (только область просмотра, то есть размер окна). Кроме того, Windows не поставляется со встроенным инструментом для изменения размера изображений (за пределами MS Paint).

В качестве рекомендации, возможно, стоит обратить внимание на ImageMagick, поскольку он поддерживает как Windows, так и MacOS. После установки вы можете просто использовать, например:

convert screenshot1.png -resize 50% thumbnail-screenshot1.png

изменить размер изображения (хотя есть много других возможных вариантов). Вы можете сделать это (или любые аналогичные команды) частью скрипта, который захватывает сами скриншоты, или частью отдельного скрипта постобработки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .