Web Scraping mit CasperJS und PhantomJS
-
FragSalat -
20. Februar 2013 um 12:24 -
2.444 Mal gelesen -
0 Kommentare
CasperJS, PhantomJS oder NodeJS als Lösung
Beim Web Scraping geht es größten Teils darum, Informationen aus einer bereits existierenden Quelle, in diesem Fall die Webseite, zu extrahieren.
Was mit den Daten gemacht wird bleibt einem selbst überlassen.
Es ist allerdings Vorsicht geboten da das Web Scraping meist von den Seitenbetreibern ungern gesehen oder sogar verboten ist.
Elemente die über Javascript nachgeladen werden sind mit PHP, python und co nicht zu erreichen?
Warum dann nicht einfach Javascript für das Web Scraping benutzen?
Mit CasperJS, PhantomJS oder NodeJS lassen sich Javascripte vom Server aus ausführen und man kann Webseiten laden und verarbeiten.
Zudem bieten sie die Möglichkeit den eigenen Javascript Code im geladenen Seiten Kontext auszuführen und somit auf den gesamten DOM Baum zuzugreifen.
Damit kann man Elemente auslesen oder modifizieren und man könnte z.B. ein Klick Event simulieren.
Die Praxis des Web Scrapings mit CasperJS
CasperJS ist eine Erweiterung von PhantomJS und basiert grundlegend auf einzelnen Schritten.Man deklariert in den Schritten die Funktionen, die am Ende zum gewünschten Ergebnis führen, welche dann im Seiten Kontext ausgeführt werden.Mit CasperJS kann man allerdings nicht nur für das Web Scraping benutzen sondern auch ein Bild von der Webseite auf einfachste weise erstellen.Hier ein kleiner Beispiel Code wie man beim Web Scraping einen Login tätigt.
// Starten der Casper instanz
casper.start();
// Öffnen der ersten Url
casper.open('http://www.ich.bin/eine/url');
// Einen Schritt definieren
casper.then(function login() {
// Einfach etwas ausgeben um sicher zu sein das die Funktion aufgerufen wurde
casper.echo("login"); // Prüfen ob ein HTML Element existiert
if (casper.exists('#loginForm')) {
// Login form ausfüllen
casper.fill('#loginForm', {
'Email': '[email protected]',
'Passwd': 'password'
}, true);
}
// Ein Bild von der Seite nach dem Absenden der Form machen.
casper.capture('screen1.png');
});
// Alle schritte ausführen
casper.run(function() {
casper.echo('fertig');
casper.exit();
});
Alles anzeigen
Mehr zum Thema Web Scraping gibts beim nächsten mal 
Kommentare