automatischer Screenshot
M.
- webserver
Mahlzeit,
für ein Datenbankprojekt mache ich automatische Screenshots der entsprechenden Webseiten (aktuell ca. 50000 Stück)
Die Screenshots laufen auf nem Rechner ohne GUI (Linux).
Jetzt wollte ich mal nachfragen, ob jemand ne elegantere Lösung hat, weil mein Problem ist, dass ich ne feste Wartezeit bis zum Seitenaufbau angeben muss, da der Browser keine Rückmeldung gibt, ob die Seite fertig geladen ist.
#!/bin/sh
# Schlafzeit
SLEEP=10
# Framebuffer starten
echo Xfvb starten
Xvfb :2 -screen 0 1280x1024x24 -ac &
# Icewesel aufrufen
echo iceweasel starten
DISPLAY=:2 iceweasel -P "normal Surfen" -width 1280 -height 1024 -new-window $1 &
echo iceweasel gestartet mit Seite $1
# Schlafen bis Seite aufgebaut ist
echo schlafen für $SLEEP sekunden.....
sleep $SLEEP 1> /dev/null 2> /dev/null
echo ausgeschlafen
# Screenshot
echo Screenshot
DISPLAY=:2 xwd -root -silent | xwdtopnm | pnmscale -xysize 1280 1024 | pnmtojpeg > modules/streamlist/pics/original/$2.jpg
# Icewesel killen
echo Killen
killall firefox-bin
Das ganze wird von einem PHP-Script gestartet, dass in $1 die URl und in $2 eine ID übergibt. Am Ende wird dann durch das PHP-Script Xvfb wieder gekillt.
Das Script webthumb,das im Web rumgeistert,macht es ähnlich, läuft aber nicht ohne massive Änderungen, deshalb lieber was eigenes.
Das Script wartet in diesem Fall also 10 Sekunden bevor der Screenshot gemacht wird. Gibts evtl. ne Lösung um zu erfahren, ob der Browser (in diesem Fall icewesel, also Firefox unter Debian) mit dem Laden fertig ist?
Hallo,
Jetzt wollte ich mal nachfragen, ob jemand ne elegantere Lösung hat, weil mein Problem ist, dass ich ne feste Wartezeit bis zum Seitenaufbau angeben muss, da der Browser keine Rückmeldung gibt, ob die Seite fertig geladen ist.
Dafür gibt es PhantomJS, das wartet automatisch, bis die Seite geladen ist.
Mathias
Dafür gibt es PhantomJS, das wartet automatisch, bis die Seite geladen ist.
Danke für die Info, das schau ich mir an, sieht auf den ersten Blick recht gut aus :)