web-dev-qa-db-ja.com

URLのリストのスクリーンショットを撮る方法

約20のイントラネットページのサムネイルサイズのスクリーンショットを保存して、毎週繰り返す必要があります。

スクリーンショットはビジネス情報であるため、オンラインサービスの使用を除外しました。

私のオフィスではWindowsとMacOSの両方を使用しているため、アプリケーションのインストールを除外しました。一部のユーザーがインストールできないアプリケーションに依存したくありませんでした。

URLのリストを受け入れるChrome拡張機能が見つかりませんでした。バッチではなく、開いている1ページのスクリーンショットを保存する拡張機能のみが見つかりました。

他の方法はありますか?

2
scenography

他の方法はありますか?

Chrome --headless(GUIなし)モード(バージョン59以降で利用可能)での使用を検討してください。Firefoxには、バージョン56以降で同様の機能があります。

Chrome(またはFirefoxでは--headless)の-headlessオプションと組み合わせると、--screenshotオプションを使用できます( Firefox 57以降 )コマンドラインからWebサイトのスクリーンショットを撮る。これらの機能は、各ブラウザの現在のバージョンを使用していることを前提として、WindowsとMacOSの両方でサポートされている必要があります。

Windows上のChrome

WindowsでChromeを使用してWebページをキャプチャする)の例として、次のコマンドを使用して、たとえば 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"

追加オプション

  • -print-to-pdf— Webページの.pdfバージョンを作成します。 --print-to-pdf="C:\path\to\output.pdf"

  • -window-size—スクリーンショットなどにレンダリングする正確なウィンドウサイズを指定します。例: --window-size=1366,768

  • -hide-scrollbars—スクリーンショットなどにレンダリングされる可能性のあるスクロールバーを削除します(ビューポートが小さいため)。

追加のスイッチの更新されたリストが利用可能です ここ

ヘッドレスChrome落とし穴

  • Windowsでは、Chromeのように非常にうるさいパスに関してうるさい。奇妙な振る舞い(または明白な失敗)を避けるために、常に絶対パス+ファイル名これは特に--screenshotおよび--print-to-pdfに適用されますが、WindowsのPATH/PathにChrome chrome(ala MacOS)を使用するだけで、問題が発生する可能性があります(特にバッチファイルで)。

  • 個々のページのレンダリングには、個々の時間がかかります。たとえば、テストシステムで https://example.com のスクリーンショットがほぼ瞬時に作成されたのに対し、 https://superuser.com は常に約30秒かかりました。レンダリングに時間がかかります。

  • --screenshotなしで--headlessを使用すると、複数のスクリーンショットのキャプチャで問題が発生する可能性があります。

  • スクリーンショットは、画像の拡張子に関係なく、.pngファイルとしてキャプチャされます(つまり、.jpgファイルはありません)。

  • キャプチャしたくないコンテンツがキャプチャされていない場合は、--window-sizeオプションを調整してみてください。ただし、「完全な」(スクロールする)Webページのキャプチャは(少なくとも理論的には)問題がある可能性があるため、状況によっては、後でより複雑なソリューションを掘り下げる必要がある場合があることに注意してください。

  • スクリーンショットのキャプチャは、より「従来の」Webページで最適に機能します。 Webアプリケーションは、望ましくない結果をもたらす可能性があります。

URLのリストを受け入れるChrome拡張機能が見つかりませんでした。バッチではなく、開いている1ページのスクリーンショットを保存する拡張機能のみが見つかりました。

残念ながら、--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のリストを(たとえばテキストファイルから)実際に読み取るスクリプトを作成することもできます。バッチ(Windows)、Powershell(Windows)、シェルスクリプト(MacOS)、Python( Windows およびMacOS)またはその他の利用可能なオプション。

約20のイントラネットページのサムネイルサイズのスクリーンショットを保存する必要があります[...]私のオフィスはWindowsとMacOSの両方を使用しているため、アプリケーションのインストールを除外しました。一部の人がインストールできないアプリケーションに頼りたくありませんでした。

このステップでサードパーティのアプリケーションを回避できるとは思いません。繰り返しますが、--headlessを使用した--screenshotモードでは、実際の画像のサイズ変更はサポートされていません(ビューポート、つまりウィンドウサイズのみ)。さらに、Windowsには、画像のサイズを変更するための組み込みツールが付属していません(MSペイント以外)。

推奨事項として、 ImageMagickWindowsとMacOS の両方をサポートしているため、調べる価値があるかもしれません。インストールしたら、次の例を使用できます。

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

画像のサイズを変更します(ただし、利用可能なオプションは他にもたくさんあります)。

上記のコマンドは、ImageMagick 7.x +の現在のバージョン用であることに注意してください。 ImageMagickのレガシーバージョンの場合、convertの代わりにmagickを使用することをお勧めします。

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

これら(または同様のコマンド)は、スクリーンショット自体をキャプチャしたスクリプトの一部にすることも、別の後処理スクリプトの一部にすることもできます。

3
Anaksunaman

また、そのようなソフトを探し、最終的に自分でスクリプトを記述しました https://github.com/rytsikau/eeScreen

1
Eugen Rytikov