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();
- });
Mehr zum Thema Web Scraping gibts beim nächsten mal
Kommentare