Was ist ein Crawler?
Wie funktioniert dieser, wie entwickle ich einen und was ist erlaubt?
Dieser Guide gibt Dir eine ausführliche Auskunft!
Starten wir!
Was ist ein Crawler?
Ein Crawler / Spider ist eine Software, die Webseiten im Internet besucht und diese abspeichert. Der Crawler erhält einen oder mehrere Webseiten als Startseite(n) und springt von Link zu Link (<a href=““>). Die Inhalte der Webseite speichert der Crawler in einer Datenbank ab und verarbeitet je nach Anwendungsfall diese weiter. Die gesammelten Daten stellen ein Teil vom Internet dar, welche miteinander vernetzt sind und mit hoher Wahrscheinlichkeit ein ähnliches Themenspektrum beinhalten.
Funktion und Sinn von Crawlern
Ein Crawler sucht nach Webseiten im Internet. Weil das Internet dynamisch /organisch ist und die Inhalte sich ständig verändern z. B. neue, gelöschte, geänderte oder verschobene Inhalte. Internet-Suchmaschinen verwenden Crawler, um Webseiten und ihre Inhalte zu Schlüsselworten und Themenbereichen zuzuordnen.
Anwendungsfälle und Nutzen
Ein Crawler registrieren Änderungen, arbeiten zuverlässiger als Menschen und sind meisten auf eine Aufgabe getrimmt:
- Data-Mining: Du möchtest neue Ideen und Zusammenhängen zu einem Thema / Webseite erkennen und nutzt den Crawler, um 1000nde von potenzielle Webseiten zu speichern. In der Regel solltest Du auf thematisch ähnlichen Webseiten herunterladen, die Du mit Text-Mining-Verfahren auf Themen weiter untersuchen kannst.
- Forensik: Die Polizei kann Crawler nutzen, um die Mitglieder einer Vereinigung, Verschwörungen oder geheime Clubs zu identifizieren. Die (Dark-Web)-Crawler eigenen sich dafür, illegale Shops aufzudecken oder illegales Kopieren von Inhalten zu unterbinden.
- Fehleranalyse: Eine gute Webseite verlinkt nicht zu 4XX oder 5XX Webseiten. Dafür kann der Webseitenbetreiber einen Crawler los schicken und die Linkstrukturen überprüfen.
- Marktforschung: Die Marketing-Abteilung eines Unternehmens möchte mehr über eine Personengruppe / Unternehmen erfahren und will dazu das Internet auf bestimmte Artikel abtasten. Google indexiert die Webseiten bereits gut, aber eine Volltext-Suche oder Regex ist nicht möglich.
Die 3 wichtigsten Crawler Arten
Universale Suchmaschinen-Crawler
Suchmaschinen-Crawler wollen möglichst alle Webseiten im Internet indexieren und die Inhalte Schlüsselwörtern zu ordnen. Sie gelten als „freundlich“ und besuchen keine Webseite, welche die robots.txt verbietet.
Die Sortierung für einen Suchbegriff „Schnellster Computer“ ermittelt die Suchmaschine anhand von eingehenden Links. Wenn viele Links auf eine Domain oder Webseite verweisen, muss diese wertvoll sein.
Spezifische Themen Crawler
Jedes Unternehmen oder Privatperson, die nicht einen Zettabyte an Speicher hat, crawlt nach Themen in einem begrenzten Umfang. Die Person versucht von Webseite zu Webseite zu springen und nach Stichworten zu suchen, die in ein Thema hineinpassen. Diese Vorgehensweise ist besonders interessant, um neue Ideen zu generieren und Zusammenhänge zu ermitteln, die kein Mensch vorher erkannt hat.
Böse Bots
Sogenannte Botnets sind gehackte Internet-of-Things-Geräte (intelligente Kameras, Kühlschränke, Sensoren, Lichtschalter usw.), die auf Kommando einen Server überlasten.
Diese senden Datenmüll an den Server, sodass einen nicht geschützter Server schnell abschalten muss. Die Masse an Anfragen kann der Server nicht verarbeiten. Normale Kunden können den Server nicht mehr erreichen, weil der Server mit sinnlosen Anfragen beschäftigt ist.
Web Crawler selbst bauen – Tutorial
Die nächsten Überlegungen zeigen Dir, wie Du mit Web Crawling starten kannst.
Ist Web Crawling erlaubt?
Generell ist Web Crawling auf einer beliebigen Webseite nicht erlaubt. Du musst das Einverständnis des Webseitenbetreibers haben. Oftmals steht in den AGBs, dem Impressum oder der Datenschutzerklärung, ob Crawling erlaubt ist. Wenn nicht, musst Du das Unternehmen / die Person anfragen und um eine Erlaubnis bitten.
Ein weiterer Indikator ist der Meta-Tag index / no-index oder die robots.txt. Du darfst nicht die ausgeschlossenen Seiten crawlen.
Alternativ sind auch Header möglich:
<meta name="googlebot" content="noindex"> <meta name="googlebot-news" content="nosnippet"> X-Robots-Tag: googlebot: nofollow X-Robots-Tag: otherbot: noindex, nofollow
Legitime Gründe für Crawling-Verbot
Bots könnten die Inhalte 1 zu 1 kopieren und auf einer anderen Domäne hosten. Außerdem erhöhen Bots den Traffic auf dem Server, welches die verfügbaren Kapazitäten reduzieren, Bandbreite reduziert und Strom kostet. Bei falscher Programmierung kann es sogar sein, das Bots nicht öffentliche / geheime Dateien finden oder Operationen unabsichtlich ausführen (Löschen-Link).
Folgen für Verbot-Missachtung
Was installieren Webseitenbetreiber, damit die Bots nicht verbotenes Crawlen? Sie installieren Fallen!
Steffen Lippke
Die Spider Traps sind Skripte, die unendlich viele Webseiten und sinnlose Inhalte produzieren. Alle Links, die von der Quatsch-Webseite ausgehen, führen auf weitere Quatsch-Webseiten, sodass der Crawler gefangen ist.
Die Spider Trap füllt den Speicher des Crawlers mit sinnlosen Daten auf und macht diesem das Leben schwer, weil der Kriminelle die Daten bei der Nachbereitung wieder entfernen muss.
Die „vergessenen“ Alternativen
Bevor Du auf die Idee kommst, einen Crawler zu schreiben, informiere Dich vorher, ob die Webseite(n) eine Anwendungsschnittstelle (API) hat, mit der Du Texte /Inhalt viel effektiver extrahieren kannst.
Falls Du nichts findest, kannst Du Dir Gigabyte-weise fertig gecrawlte Webseiten herunterladen. Auf Kaggle oder CommonCrawl. Statt dass jeder das Internet crawlt, sollte ein großer, gutmütiger und richtig eingestellter Crawler die Datensätze zur Verfügung stellen und somit die Last von den Quellserver reduzieren.
Webcrawler mit Python bauen
Technisch gesehen ist ein Crawler ein Webseiten-Downloader. Dazu brauchst Du eine oder mehrere Start-Webseiten in einem Array. Dann rufst Du die Inhalte mit einem CURL-Kommando ab und speicherst diese in einer
- SQL-Datenbank (Abfragen mit der SQL-Abfragesprache)
- CSV-Dateien (Komma separierte Inhalte)
- NoSQL-Datenbank (Splunk, Couch-DB)
- SQL-Lite Datei
Nutze Scrapy https://scrapy.org/ für die Webcrawler konstruktion, für die Webseiten-Daten und Export nutzt Du Pandas https://pandas.pydata.org/ und Natural Language Processing geht am besten mit dem Bibliothek NLTK https://www.nltk.org/
- Aus der Webseite extrahierst Du die URLs (<a href=““>). Weil Du meistens mehrere URLs zu gleich erhältst, musst Du diese priorisieren. Soll der Bot …
- nach Link-Texten mit Schlüsselwörtern suchen?
- eine andere Domain besuchen oder auf der gleichen bleiben?
- die meist verlinkte Webseiten besuchen?
- gewisse Domains nie besuchen oder priorisieren besuchen?
Je nach Webseite musst Du Dich mit Single Page Applications (SPA) herumschlagen. Diese sind nicht immer so leicht zu crawlen, weil der Bot JavaScript zur Inhaltserxtration ausführen muss.
Nachbereitung und Auswertung
Weil Du als Privatperson / Unternehmen nur begrenzte Ressourcen hast, musst Du entscheiden wie langen und wie viel Daten der Bots sammeln soll. Mit der Datensammlung allein kannst Du nichts anfangen. Du musst die Inhalte aggregieren und die Auswahl einschränken. Du kannst
Den Datensatz bereinigen / Vorselektion
- Füllwörter entfernen (Stopwords)
- Worthäufigkeiten zählen und Wortwolken berechnen
- Nach Sprachen / Inhalten / Themen / Domains sortieren oder gruppieren
- Schlüsselwort-Dichten berechnen
- Stemming und Lematisierung (ging → gehen, schnellsten → schnell) durchführen
- Topic-Modelle erstellen
- Neuronale Netze mit den Wörtern füttern