ウェブサイトのリストをスクリーンショットするシンプルなスクリプトです。url-to-image PhantomJS スクリプトをベースにしています。
--ignore-certificate-errors オプションが機能せず、今後も機能しなくなるためです。解決策は適切なwebdriverを使用することですが、現在 webscreenshot はこの_かなり複雑な_方法(サードパーティツールが必要)をサポートすることを目的としていません。ImageMagick が必要)ターゲットをテキストファイルに記述し、-i オプションで指定するか、単一の URL の場合は位置引数として渡します。
デフォルトでは、スクリーンショットは現在の ./screenshots/ ディレクトリに保存されます。
受け入れられる入力形式は次のとおりです:
http(s)://domain_or_ip:port(/resource)
domain_or_ip:port(/resource)
domain_or_ip(/resource)
webscreenshot.py version 2.96
usage: webscreenshot [-h] [-i INPUT_FILE] [-o OUTPUT_DIRECTORY] [-w WORKERS] [-v] [--no-error-file] [-z SINGLE_OUTPUT_FILE] [-p PORT]
[-s] [-m] [-r {phantomjs,chrome,chromium,edge,firefox}] [--renderer-binary RENDERER_BINARY] [--no-xserver]
[--window-size WINDOW_SIZE] [-f {pdf,png,jpg,jpeg,bmp,ppm}] [-q [0-100]] [--ajax-max-timeouts AJAX_MAX_TIMEOUTS]
[--crop CROP] [--custom-js CUSTOM_JS] [-l] [--label-size LABEL_SIZE] [--label-bg-color LABEL_BG_COLOR]
[--imagemagick-binary IMAGEMAGICK_BINARY] [-c COOKIE] [-a HEADER] [-u HTTP_USERNAME] [-b HTTP_PASSWORD]
[-P PROXY] [-A PROXY_AUTH] [-T PROXY_TYPE] [-t TIMEOUT]
[URL]
options:
-h, --help このヘルプメッセージを表示して終了
メインパラメータ:
URL 位置引数として指定する単一のターゲット URL
-i, --input-file INPUT_FILE
<INPUT_FILE> ターゲットリストを含むテキストファイル。例: list.txt
-o, --output-directory OUTPUT_DIRECTORY
<OUTPUT_DIRECTORY> (オプション): スクリーンショットの出力ディレクトリ (デフォルト './screenshots/')
-w, --workers WORKERS
<WORKERS> (オプション): 並列実行ワーカー数 (デフォルト 4)
-v, --verbosity <VERBOSITY> (オプション): 詳細度レベル、繰り返すとレベルが上がります { -v INFO, -vv DEBUG } (デフォルトの詳細度 ERROR)
--no-error-file <NO_ERROR_FILE> (オプション): スクリーンショット失敗 URL のリストをファイルに書き込まない (デフォルト false)
-z, --single-output-file SINGLE_OUTPUT_FILE
<SINGLE_OUTPUT_FILE> (オプション): すべての入力の単一出力ファイル名。例: test.png
入力処理パラメータ:
-p, --port PORT <PORT> (オプション): 入力リスト内の各ターゲットに指定されたポートを使用。例: -p 80
-s, --ssl <SSL> (オプション): すべての接続に SSL/TLS を強制
-m, --multiprotocol <MULTIPROTOCOL> (オプション): 各ターゲットに対して HTTP と HTTPS の両方でスクリーンショットを実行
スクリーンショットレンダラーパラメータ:
-r, --renderer {phantomjs,chrome,chromium,edge,firefox}
<RENDERER> (オプション): 使用するレンダラー。'phantomjs' (レガシーだが最良の結果), 'chrome', 'chromium',
'edge', 'firefox' (バージョン > 57) から選択 (デフォルト 'phantomjs')
--renderer-binary RENDERER_BINARY
<RENDERER_BINARY> (オプション): $PATH に見つからない場合のレンダラー実行可能ファイルへのパス
--no-xserver <NO_X_SERVER> (オプション): X サーバーなしで実行する場合、xvfb-run を使用してレンダラーを実行します
(デフォルトでは DISPLAY 環境変数の有無を検出しようとします)
スクリーンショット画像パラメータ:
--window-size WINDOW_SIZE
<WINDOW_SIZE> (オプション): 画面キャプチャの幅と高さ (デフォルト '1200,800')
-f, --format {pdf,png,jpg,jpeg,bmp,ppm}
<FORMAT> (オプション, phantomjs のみ): 出力画像ファイル形式。"pdf", "png", "jpg", "jpeg", "bmp"
または "ppm" (デフォルト 'png')
-q, --quality [0-100]
<QUALITY> (オプション, phantomjs のみ): 出力画像の品質。0 から 100 の整数 (デフォルト 75)
--ajax-max-timeouts AJAX_MAX_TIMEOUTS
<AJAX_MAX_TIMEOUTS> (オプション, phantomjs のみ): AJAX リクエストあたり、および URL 最大タイムアウト (ミリ秒) (デフォルト '1400,1800')
--crop CROP <CROP> (オプション, phantomjs のみ): 画面キャプチャを切り抜く矩形 <t,l,w,h> (デフォルトは WINDOW_SIZE: '0,0,w,h')、数値のみ、w(idth) と h(eight)。例: "10,20,w,h"
--custom-js CUSTOM_JS
<CUSTOM_JS> (オプション, phantomjs のみ): スクリーンショット撮影前に実行する JavaScript コードを含むファイルのパス。例: js.txt
スクリーンショットラベルパラメータ:
-l, --label <LABEL> (オプション): 各スクリーンショットについて、ターゲット URL を表示した別の画像を作成 (imagemagick が必要)
--label-size LABEL_SIZE
<LABEL_SIZE> (オプション): ラベルのフォントサイズ (デフォルト 60)
--label-bg-color LABEL_BG_COLOR
<LABEL_BACKGROUND_COLOR> (オプション): ラベルの imagemagick 背景色 (デフォルト NavajoWhite)
--imagemagick-binary IMAGEMAGICK_BINARY
<LABEL_BINARY> (オプション): $PATH に見つからない場合の imagemagick 実行可能ファイル (magick または convert) へのパス
HTTP パラメータ:
-c, --cookie COOKIE <COOKIE_STRING> (オプション): 追加する Cookie 文字列。例: -c "JSESSIONID=1234; YOLO=SWAG"
-a, --header HEADER <HEADER> (オプション): カスタムまたは追加ヘッダー。ヘッダーごとにこのオプションを繰り返します。例: -a "Host: localhost" -a "Foo: bar"
-u, --http-username HTTP_USERNAME
<HTTP_USERNAME> (オプション): HTTP Basic 認証のユーザー名を指定。
-b, --http-password HTTP_PASSWORD
<HTTP_PASSWORD> (オプション): HTTP Basic 認証のパスワードを指定。
接続パラメータ:
-P, --proxy PROXY <PROXY> (オプション): プロキシを指定。例: -P http://proxy.company.com:8080
-A, --proxy-auth PROXY_AUTH
<PROXY_AUTH> (オプション): プロキシの認証情報を提供。例: -A user:password
-T, --proxy-type PROXY_TYPE
<PROXY_TYPE> (オプション): プロキシタイプを指定。"http" (デフォルト), "none" (完全に無効), または
"socks5"。例: -T socks
-t, --timeout TIMEOUT
<TIMEOUT> (オプション): レンダラー実行のタイムアウト(秒)(デフォルト 30 秒)
list.txt
--------
http://google.fr
https://216.58.213.131
216.58.213.131
https://duckduckgo.com/robots.txt
リストを使用したデフォルト実行
-----------------------------
$ python webscreenshot.py -i list.txt
webscreenshot.py version 2.3
[+] 4 URLs to be screenshot
[+] 4 actual URLs screenshot
[+] 0 error(s)
単一 URL を使用したデフォルト実行
-----------------------------------
$ python webscreenshot.py -v google.fr
webscreenshot.py version 2.3
[INFO][General] 'google.fr' has been formatted as 'http://google.fr:80' with supplied overriding options
[+] 1 URLs to be screenshot
[INFO][http://google.fr:80] Screenshot OK
[+] 1 actual URLs screenshot
[+] 0 error(s)
詳細度レベルを上げた実行
-----------------------------------
$ python webscreenshot.py -i list.txt -v
webscreenshot.py version 2.3
[INFO][General] 'http://google.fr' has been formatted as 'http://google.fr:80' with supplied overriding options
[INFO][General] 'https://216.58.213.131' has been formatted as 'https://216.58.213.131:443' with supplied overriding options
[INFO][General] '216.58.213.131' has been formatted as 'http://216.58.213.131:80' with supplied overriding options
[INFO][General] 'https://duckduckgo.com/robots.txt' has been formatted as 'https://duckduckgo.com:443/robots.txt' with supplied overriding options
[+] 4 URLs to be screenshot
[INFO][https://duckduckgo.com:443/robots.txt] Screenshot OK
[INFO][http://216.58.213.131:80] Screenshot OK
[INFO][https://216.58.213.131:443] Screenshot OK
[INFO][http://google.fr:80] Screenshot OK
[+] 4 actual URLs screenshot
[+] 0 error(s)
結果
-------
$ ls -l screenshots/
total 187
-rwxrwxrwx 1 root root 53805 May 19 16:04 http_216.58.213.131_80.png
-rwxrwxrwx 1 root root 53805 May 19 16:05 http_google.fr_80.png
-rwxrwxrwx 1 root root 53805 May 19 16:04 https_216.58.213.131_443.png
-rwxrwxrwx 1 root root 27864 May 19 16:04 https_duckduckgo.com_443_robots.txt.png
以下に記載されていないオプションは、現在のすべてのレンダラーでサポートされています。
pip install webscreenshot を実行し、その後 $ webscreenshot を直接使用pip install -r requirements.txt を実行し、その後 python webscreenshot.pyxvfb(ヘッドレス OS で webscreenshot を実行する場合): --no-xserver webscreenshot オプションを使用すると簡単ですImageMagick バイナリ(magick または convert): --label オプションでスクリーンショットに URL を埋め込む場合: インストールガイド に従ってくださいwebscreenshot はフリーソフトウェアです。Free Software Foundation によって発行された GNU General Public License のバージョン 3、または(オプションで)それ以降のバージョンの条件に基づいて、再配布および/または変更することができます。
webscreenshot は有用であることを期待して配布されていますが、いかなる保証もありません。商品性または特定目的への適合性についての暗黙の保証も含め、明示的または黙示的な保証は一切ありません。
詳細については、GNU General Public License を参照してください。
あなたは webscreenshot とともに GNU General Public License のコピーを受け取っているはずです。
受け取っていない場合は、http://www.gnu.org/licenses/ をご覧ください。
| オプションカテゴリ | オプション | PhantomJS レンダラー | Chromium / Chrome / Edge Chromium レンダラー | Firefox レンダラー |
|---|
| スクリーンショットパラメータ | ||||
形式 (-f) | はい | いいえ | いいえ | |
品質 (-q) | はい | いいえ | いいえ | |
ajax およびリクエストタイムアウト (--ajax-max-timeouts) | はい | いいえ | いいえ | |
切り抜き (--crop) | はい | いいえ | いいえ | |
カスタム JavaScript (--custom-js) | はい | いいえ | いいえ | |
| HTTP パラメータ | ||||
Cookie (-c) | はい | いいえ | いいえ | |
ヘッダー (-a) | はい | いいえ | いいえ | |
http_username (-u) | はい | いいえ | いいえ | |
http_password (-b) | はい | いいえ | いいえ | |
| 接続パラメータ | ||||
プロキシ (-P) | はい | はい | いいえ | |
プロキシ認証 (-A) | はい | いいえ | いいえ | |
プロキシタイプ (-T) | はい | はい | いいえ | |
| 公開証明書で署名されていない HTTPS ウェブサイトのスクリーンショット機能 | はい | いいえ | いいえ |