PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfache Methode per Cronjob regelmässig Shots von Website zu machen ?



Newbie314
29.05.08, 19:19
Hallo !

Eigentlich würde ich gerne am 6.6. von dieser Website http://watchee.net/watchee/track.jsp alle paar Minuten per Cronjob einen "screenshot" in einem Bildformat (jpg, gif, png oder ähnlich) abspeichern.

Ich nehme an dass das mit einem Script unter Verwendung von Curl und ImageMagick irgendwie schon ginge, will aber nicht einige Stunden herumexperimentieren und programmieren.

Hat jemand von Euch so etwas schon gemacht ? Gibt es Software dazu ?

Da ich wahrscheinlich nicht zuhause sein werde sollte das Ganze per cronjob laufen, d.h. es wird niemand wirklich eingeloggd sein => "echte" Screenshots (a la Ksnapshot) gehen also nicht.

Ich habe per Google nichts gefunden was mit vernünftigem Aufwand ginge, auch bei Firefox habe ich keine Option gefunden die ein Image einfach abspeichern würde ... zumal Javascript und der dusselige "OK" button sowie das "login as public" dabei sind ...

Bevor ich vollends aufgebe wäre ich für Stichworte / Tipps dankbar :ugly:

Edit: bei Firefox, Lynx und Konqueror habe ich keine Kommandozeilen-Optionen gefunden die mir dabei helfen würden.

Painkiller
30.05.08, 08:31
Such mal nach html2png oder khtml2png etc. Ich hatte da mal was mit khtml, inkl. allem Javageraffel usw.

Edit: Ich glaub das wars: http://khtml2png.sourceforge.net/

Newbie314
30.05.08, 10:23
Danke ! Das sieht ja aus als wäre es exakt das was ich suche !

Der Name Khtml... täuscht, es ist offensichtlich ein "richtiges" Kommandozeilen-Tool.. also ideal für cronjobs ....

Ich schau es mir genauer an und poste dann hier wie es lief....

Painkiller
30.05.08, 14:32
Naja, es benoetigt ein laufendes X um den Konqueror zu starten und davon ein Foto zu machen.

Newbie314
30.05.08, 15:39
Das ist dann Problem nummer zwei... das "Bildschirmfoto" von einem "virtuellen" Bildschirm machen da ja niemand wirklich eingeloggd ist ... mal sehen ob ich die Zeit finde das bis zum nächsten Samstag herauszufinden...

Newbie314
30.05.08, 20:36
Eigentlich hätte ich anderes zu tun, aber ich konnte nunmal nicht widerstehen.

Also: Problem 2 dürfte gelöst sein:

Alt Strg + F1 => Textterminal.

Einloggen unter dem Usernamen.

xinit -- :1 öffnet ein neues Xterminal, wer einen ganzen
KDE haben will startet stattdessen
xstart -- :1

kwrite -display :1 öffnet dann Kwrite im neuen Terminal.

Das müsste so auch für Khtml2png funktionieren, bei Firefox klappt es so aber nicht da die Fehlermeldung kommt Qt fehle.

Gescheitert bin ich dagegen dabei Khtml2png bei mir zum Laufen zu bringen:

Die statische Version "crasht" da sie versucht auf /lib64 zuzugreifen (? die ist doch bestimmt für 32 bit kompiliert ? Ja, ich habe eine 64 Bit Installation...)

Dann habe ich cmake und kdelib nachinstalliert und versucht selbst zu kompilieren.. ging aber auch schief, bei make bricht er wegen Inkonsistenzen mit diversen Deklarationen in Headerfiles ab => anscheinend nicht kompatibel zu meinem Suse 10.2 Standard-KDE....

Jetzt habe ich mit diesem "Nice to have" zu viel Zeit vertüddelt ... und gebe an dieser Stelle auf, zumal die Beschreibung von khtml2png keine Optionen bietet wie man die "OK" und "Login" Buttons klicken kann die ich außerdem noch benötigen würde ...

Edit: habe noch ein Shareware-Programm namens html2image gefunden, dies kommt aber mit den Javascript "features" der Seite (zumindest in der freien Version) nicht klar.

geronet
30.05.08, 21:51
Es gibt noch die Möglichkeit mit einem Virtuellem X-Server: vncserver..
Sehr praktisch wenn man keinen Monitor dran hat und unbedingt ein graphisches Programm braucht.

Grüsse, Stefan

Newbie314
30.05.08, 22:25
Wo liegt da der unterschied zum Xserver ? Wenn ich im LAN eine Kiste mit Xserver habe kann ich ja dort ein Display aufmachen ....


Habe jetzt die Add-ons in Mozilla noch durchsucht (in dem Falle hätte ich jemand anderen gebeten seinen Rechner laufen zu lassen und die Screenshots automatisiert durchführen zu lassen): zwei Programme gefunden, aber die sind nicht per Script steuerbar bzw. besitzen nicht die Option regelmäßig einen Screenshot abzuspeichern. Jetzt steck ich es wirklich ;-)

Painkiller
31.05.08, 09:50
Schau mal bei rpm.pbone.net, da finde ich ein RPM fuer Suse 10.2. Wenn du dann auch noch Aktionen ausfuerhren willst, schau dir http://hoopajoo.net/projects/xautomation.html an.


xte 'mousemove 100 200' 'mouseclick 1'

Das bewegt den Mauszeiger an die Koordinaten 100,200 und macht einen Linksklick. Mit "visgrep" in dem Paket kannst du nach Buttons im Screenshot "greppen" und dir die Koordinaten ausgeben lassen.

cane
31.05.08, 10:26
Mit Selenium könnte man das sicherlich machen, ist aber schon eher zu komplex.

mfg
cane

Newbie314
31.05.08, 10:43
Also:

tolles Repo, dieses Paket installiert sich problemlos.

Bei Teststarts crasht Khtml2png einfach wenn man http:// nicht mit angibt. Wenn ja, dann geht es auf dem Bildschirm erstmal rund: die Seite wird in zig verschiedenen Größen und Positionen auf dem Bildschirm aufgebaut ...
und in der Regel sind im resultierenden .png dann Überbleibsel dieser Umbauaktionenen zu finden.


=> Die Zusammenarbeit des Tools mit Qt und KDE funktioniert noch nicht rund. Der Autor erzählt auf seiner Website dass er als Einziger an diesem Tool arbeitet, das nur Teilzeit, und dass er sich mit Qt nicht auskennt, also die Mithilfe von jemandem der sich damit auskennt gut brauchen könnte.

Mit folgenden Einstellungen gelang es mir von einfachen Websites brauchbare "shots" zu bekommen:


khtml2png2 -t 100 --inputstyle overthespot http://www.linuxforen.de test.png


Bei der Tracking-Seite kam aber nur "Grau in Grau" raus.

=> Gute Idee, aber das Tool ist so nicht wirklich brauchbar, ich werde es wieder deinstallieren.

=> An die Option die Mausklicks zu automatisieren und mit einem Firefox-Add On zu arbeiten habe ich auch schon gedacht, danke für den Link, aber zusätzlich benötigt man noch ein Script das die abgespeicherte Datei gleich umbenennt damit sie beim nächsten mal nicht überschrieben wird...

Außerdem bin ich an dem Wochenende definitiv nicht an meinem Computer ..

Das ist mir für dieses Projekt etwas zu viel Aufwand...

Vielen Dank !

undefined
01.06.08, 09:32
Mit Qt4.4. ist das ganz einfach und ohne XServer ;)
Mal ein Beispiel das du dir entsprechend ändern kannst


#ifndef WEBRENDER_H
#define WEBRENDER_H

#include <QObject>
#include <QWidget>

class QWebPage;

class WebRender : public QWidget
{
Q_OBJECT

public:
WebRender ( const char *url, QWidget *parent = 0 );
virtual ~WebRender();

private Q_SLOTS:
void snapshot();

private:
QWebPage *m_QWebPage;

};

#endif



#include "webrender.h"

#include <QWidget>
#include <QUrl>
#include <QWebView>
#include <QWebPage>
#include <QWebFrame>
#include <QDebug>
#include <QImage>
#include <QPainter>

WebRender::WebRender ( const char *url, QWidget *parent )
: QWidget ( parent )
{
QWebView *v = new QWebView( new QWidget );
v->load( QUrl ( url ) );
m_QWebPage = v->page();

connect( m_QWebPage, SIGNAL( loadFinished(bool) ), this, SLOT( snapshot() ) );
}

void WebRender::snapshot ()
{
m_QWebPage->setViewportSize( m_QWebPage->mainFrame()->contentsSize() );
QImage image(m_QWebPage->viewportSize(), QImage::Format_ARGB32);
QPainter painter(&image);

m_QWebPage->mainFrame()->render(&painter);
painter.end();

QImage thumbnail = image.scaled(400, 400);
thumbnail.save("thumbnail.png");

exit(0);
}

WebRender::~WebRender()
{}


PS: Wenn du eine Fixe Größe haben willst setzte setViewportSize statisch.
z.B auf: m_QWebPage->setViewportSize( QSize(1024, 768) );

undefined
01.06.08, 11:32
Weil ich die Idee irgendwie gut finde habe ich das Programm mal überarbeitet und eine Config dabei gepackt.
Man kann es bei Qt-Apps (http://www.qt-apps.org/content/show.php/webrender?content=82349) Downloaden. Eine Qt Version >= 4.4.0 ist Vorraussetzung.

Newbie314
01.06.08, 11:41
Also wenn du da eine Anwendungs-Anleitung für Dummies (wie mich) als Textdatei mit dabei hast werde ich das mal testen ...

Nur: kommt das auch mit dem .js mit und dem dusseligen Login auf der oben geposteten Tracking Website ? Da müsste ich doch beim Aufruf noch Aktionen mitgeben ?

undefined
01.06.08, 12:45
Wenn du das Paket qt-devel >= 4.4.0 Installiert hast kannst du einfach qmake dann make eingeben. Ich muss aber gerade nachtragen das man doch einen laufenden XServer braucht. Es geht aber über cron im Hintergrund. Ich habe es grade auf meinem server testen wollen und da meckert das proc das es kein QWidget ohne gui erstellen kann. :rolleyes: Schade beim testen auf dem Hauptrechner mit verschiedenen Benutzer ebenen ging das seltsamer weise obwohl der X auf nur einem Benutzer läuft. :confused:

moedule
01.06.08, 15:19
Hey

ich hab neulich von einem Projekt gelesen, dass für Menschen interessant ist, die von ihrer Regierung aus bestimmte Seiten zensiert bekommen (z.B. Chinesen). Also sowas in der Richtung von TOR-Netzen.

Allerdings wurde hier der Inhalt direkter übermittelt. Dabei wurde auf einem Server (im freien Land) eine Screenshot von der Seite gemacht und dieses Bild dann zur Verfügung gestellt. Die Links auf der Homepage sind damit nachwievor benutzbar (imagemap).

Leider fällt mir gerade nich ein wie dieses Projekt heist, aber das würde doch auch passen

Moe

Newbie314
01.06.08, 17:24
Ich probiere es mal aus. Ein X Server läuft ja nach dem Booten immer... das html2png Script benötigte halt nur seinen eigenen ... und der Start eines zweiten KDE führte zu ... sagen wir mal Nebenwirkungen.. jedenfalls lief mein System erst nach einem Boot wieder in allen Belangen "glatt" ....


@moedule: diese Server werden doch bestimmt auch von den Regierungen geblockt ?

lin3000
19.06.08, 00:06
Hey

ich hab neulich von einem Projekt gelesen, dass für Menschen interessant ist, die von ihrer Regierung aus bestimmte Seiten zensiert bekommen (z.B. Chinesen). Also sowas in der Richtung von TOR-Netzen.

Allerdings wurde hier der Inhalt direkter übermittelt. Dabei wurde auf einem Server (im freien Land) eine Screenshot von der Seite gemacht und dieses Bild dann zur Verfügung gestellt. Die Links auf der Homepage sind damit nachwievor benutzbar (imagemap).

Leider fällt mir gerade nich ein wie dieses Projekt heist, aber das würde doch auch passen

Moe


--->http://www.picidae.net/how_picidae_works/

lin3000