Das Ziel sind Screenshots von Webseiten, mit einem Batch Script automatisiert und kontrolliert. Keep it simple & stupid.
Die Wichtigste ist natürlich das Anfertigen der Screenshots. Das ließe sich vermutlich auch mit pure Batch erledigen, ich fand allerdings folgende Utilities besonders einfach und optimal für diesen Zweck: CutyCapt und IECapt. Beide Tools bestehen nur aus einer kleinen .exe Datei und sind kommandozeilenbasiert, optimal für eine Batch Benutzung.
CutyCapt fertigt Website Screenshots mit der WebKit Engine (Chrome und Opera nutzen diese Engine) an, IECapt nutzt die Engine des Internet Explorers.
Die Anwendung ist relativ einfach, über die CMD. Ein Beispiel:
CutyCapt.exe --url=http://www.spiegel.de/ --out=spiegel.png --min-width=1100 --min-height=800 --delay=1000
Wenn die Webseite besonders lang ist so wird sie komplett aufgenommen. Die Parameter steuern das Verhalten der Engine, beim IE gibt es nicht ganz so viele Möglichkeiten.
Das kann man jetzt in einem netten Script verpacken und schon lassen sich beliebige Webseiten mit einem Doppelklick fotografieren. Versehen mit Logging, Mailer und ein paar Kleinigkeiten, fertig.
Hier mein Script, welches 2 Screenshots der Fritz Box aufnimmt, in einem Unterordner speichert, eine Mail schickt und alles loggt, so als Muster:
Den Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.
@echo off setlocal Color 9f REM ### INFORMATIONS ############################################ REM **************************************************** REM Title: Website Screenshot Daemon (WSD) REM Author: Hannes Schurig REM Created: 22.02.2013 REM Changed: 25.02.2013 REM Version: 0.3.5 REM Changelog: 0.1: complete mailer function with flexible callback REM 0.1.1: complete new mailer with call, parameters and no local variables, 50% less code REM 0.2: CutyCapt configured to take 2 screenshots, formatted datetime filename REM 0.2.1: collect errorlevels and added to mail text REM 0.2.2: save screenshots in subfolder, check if exist, create if needed REM 0.3: use working directory and absolute paths for sheduling compatibility REM 0.3.1: script renamed, detect working directory and filename REM 0.3.2: removed usesubdir variable, remove 40-45 and edit 51 & 53 for no subdir REM 0.3.3: fixed bug - spaces in working path lead to script malfunction REM 0.3.4: CutyCapt parameters as variable - they do not change REM 0.3.5: added 20 seconds max-wait parameter REM Credits: CutyCapt website screenshot utility: http://cutycapt.sourceforge.net/ - awesome! REM **************************************************** REM ### VARIABLES ############################################ for %%a in (%0) do set filename=%%~nxa for %%a in (%0) do set wd=%%~dpa REM remove last "\" or "/" from working directory (wd) path if "%wd:~-1%"=="\" set wd=%wd:~0,-1% if "%wd:~-1%"=="/" set wd=%wd:~0,-1% set subdir=%wd%\screenshots set mailer=1 set adminmail=hannes.schurig@online.de set log="%wd%\logfile.txt" set cutycapt="%wd%\CutyCapt.exe" set datetime=0 set scerrorlevel=0 REM same parameters for every screenshot? It's shorter with: set cutycaptparameters=--min-width=1100 --min-height=800 --delay=1000 --max-wait=20000 REM ### PROGRAM START ############################################ echo %date% - %time:~0,5% (i) WSD starting... >> %log% REM check and create subdir if wanted and needed if not "%subdir%"=="" ( if not exist "%subdir%" ( md "%subdir%" ) ) REM prepare short datetime with . instead : set datetime=%date%-%time:~0,5% set datetime=%datetime::=.% %cutycapt% --url=http://fritz.box/ --out="%subdir%/%datetime%-dashboard.png" %cutycaptparameters% set scerrorlevel=%errorlevel% %cutycapt% --url=http://fritz.box/system/syslog.lua --out="%subdir%/%datetime%-events.png" %cutycaptparameters% set scerrorlevel=%scerrorlevel%%errorlevel% echo %date% - %time:~0,5% (i) Screenshot taken with errorlevel %scerrorlevel% >> %log% echo %date% - %time:~0,5% (i) Sending admin mail... >> %log% if %mailer%==1 call :mailer "WSD" "Status" "noreply@WSD.com" "Script finished with errorlevel %scerrorlevel%" :shutdown echo %date% - %time:~0,5% (i) WSD shutting down... >> %log% goto end REM ### MAILER FUNCTION ############################################ :mailer start iexplore "http://php.webmailer.de/webmail.php&mailto=%adminmail%&contactname=%~1&subject=%~2&email=%~3&message=%~4" REM wait and close ping 127.0.0.1 -n 5 > nul taskkill /im "iexplore.exe" /f ping 127.0.0.1 -n 3 > nul REM ### PROGRAM EXIT ############################################ :end endlocal
Anmerkungen dazu:
Keine Unterordner? Löscht Zeile 49-54 und passt den „–out“ Parameter in Zeile 60 und 62 an. Wenn doch, passt Zeile 28 an.
IECapt statt CutyCapt? In Zeile 38 den Dateinamen anpassen.
Der Mailer muss natürlich angepasst werden. Habt ihr einen PHP Webmailer? Dann passt die Zeilen 36, 68 und 78 an. Wenn ihr keinen Mailer habt reicht es die Zeile 35 auf 0 zu setzen.
Ansonsten müsste das funktionieren.
Alternativ zu diesem Script gibt es auch Browser Plugins mit denen Website Screenshots erstellt werden können. Awesome Screenshot wäre ein Google Chrome Plugin für diesen Zweck. Die Extension fotografiert einen ausgewählten Bereich, den sichtbaren Bereich oder die komplette Seite. Das Bild lässt sich bearbeiten, speichern, teilen und mehr.
Über die Automatisierung dieser Geschichte muss man sich dann aber noch Gedanken machen, das ist vermutlich etwas schwieriger.
Bugs, Anmerkungen sowie Verbesserungsvorschläge nehme ich natürlich gerne entgegen.