Web Scraping mit CasperJS und PhantomJS

Web Scraping mit CasperJS und PhantomJ 5 von 5 mit 1 Stimmen
| Sick^

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Werbung
Web Scraping kann eine schwierige Angelegenheit werden. Wenn die Seite mit Javascript Elemente zur Laufzeit läd sind diese mit herkömmlichen Methoden nicht zu erreichen

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.

Quellcode

  1. // Starten der Casper instanz
  2. casper.start();
  3. // Öffnen der ersten Url
  4. casper.open('http://www.ich.bin/eine/url');
  5. // Einen Schritt definieren
  6. casper.then(function login() {
  7. // Einfach etwas ausgeben um sicher zu sein das die Funktion aufgerufen wurde
  8. casper.echo("login"); // Prüfen ob ein HTML Element existiert
  9. if (casper.exists('#loginForm')) {
  10. // Login form ausfüllen
  11. casper.fill('#loginForm', {
  12. 'Email': [email protected]',
  13. 'Passwd': 'password'
  14. }, true);
  15. }
  16. // Ein Bild von der Seite nach dem Absenden der Form machen.
  17. casper.capture('screen1.png');
  18. });
  19. // Alle schritte ausführen
  20. casper.run(function() {
  21. casper.echo('fertig');
  22. casper.exit();
  23. });
Alles anzeigen

Mehr zum Thema Web Scraping gibts beim nächsten mal :)
Werbung
  • Es wurden noch keine Einträge an der Pinnwand verfasst.