Crawler programmieren – Python Tutorial für Web Spider und Bots

Crawler Web erklärt - Steffen Lippke Coding Lab

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?

Scrypy für Crawlers - Web Crawler programmieren Steffen Lippke
Scrypy für Crawlers – Web Crawler programmieren Steffen Lippke

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.

Robots Txt legt die Bereiche fest - Web Crawler programmieren Steffen Lippke
Robots Txt legt die Bereiche fest – Web Crawler programmieren Steffen Lippke

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.

Common Crawl - Crawling unnötig - Web Crawler programmieren Steffen Lippke
Common Crawl – Crawling unnötig – Web Crawler programmieren Steffen Lippke

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
Geniale Wortmaschine - Web Crawler programmieren Steffen Lippke
Geniale Wortmaschine – Web Crawler programmieren Steffen Lippke

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

Danke fürs Lesen! Erhalte weitere Tutorials in meinem kostenlosen Newsletter.
Jeden Monat teile ich mit Dir 4 neue praxisnahe Tutorials.
Trage Deine Mail zum kostenlosen Empfang des Newsletters* ein.




Quellenangabe Bilder: Icons und SVG-Grafiken im Titelbild von Microsoft PowerPoint 2019, frei verfügbar nach EULA
*) Mit dem Abonnement des Newsletters erklären Sie sich mit der Analyse des Newsletters durch individuelle Messung, Speicherung und Analyse von Öffnungsraten und der Klickraten in Profilen zu Zwecken der Gestaltung künftig besserer Newsletter einverstanden. Sie können die Einwilligung in den Empfang des Newsletters und die Messung mit Wirkung für die Zukunft widerrufen. Mehr in der Datenschutzerklärung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.


Jeden Monat teile ich mit den Mitgliedern
4 neue praxisnahe ausführliche Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Website nutzt nur technisch notwendige Cookies.