Zurück zum Blog
Die Wissenschaft des Web-Scrapings
Anda MiuțescuLast updated on Mar 31, 202612 min read

Die ultimative Liste mit Tipps und Tricks zum Web-Scraping

Die ultimative Liste mit Tipps und Tricks zum Web-Scraping

Auch wenn Web-Scraping in der Praxis einfach klingen mag, gibt es zahlreiche Fallstricke, in die ein unerfahrener Entwickler tappen könnte. Anstatt es mit roher Gewalt zu versuchen, bis einem die nicht gesperrten Proxys ausgehen, wage ich zu behaupten, dass es besser wäre, clever zu scrapen, die benötigten Daten zu erhalten und sich zurückzuziehen, ohne jemals bemerkt zu werden.

Die eigentliche Frage ist: Wie macht man das? Wie erhält man Informationen, ohne dass die IP gesperrt wird, ohne auf CAPTCHAs zu stoßen, ohne nutzlosen JavaScript-Code abzurufen und ohne den Code des Scrapers endlos anzupassen? Nun, es gibt keine goldene Regel, der man folgen muss, aber es gibt bewährte Vorgehensweisen.

Wir haben zwölf Tipps für dich zusammengestellt. Nutze sie, und du wirst sehen, dass alle Daten im Internet nur ein paar Klicks entfernt sind.

1. Planen Sie, bevor Sie scrapen

Wie bei jedem Projekt laufen Web-Scraping-Aufträge viel reibungsloser, wenn Sie schon vor dem Start eine klare Strategie entwickeln. Zunächst einmal: Warum benötigen Sie Daten? Das mag wie eine offensichtliche Frage erscheinen, aber die Antwort ist entscheidend dafür, welche Informationen Sie sammeln sollten.

Als Nächstes: Woher beziehen Sie die Informationen? Das Scraping-Tool sollte gut auf die zu besuchenden Websites abgestimmt sein, daher hilft Ihnen die Analyse Ihrer Datenquellen dabei, das richtige Programm für die Aufgabe zu entwickeln oder zu erwerben.

Frage drei: Wie werden Sie die gesammelten Informationen nutzen? Sie könnten sie selbst verarbeiten, Software einsetzen oder sie sogar durch eine komplexe Pipeline leiten. Die Antwort darauf ist Ihr erster Schritt bei der Festlegung der Struktur und des Dateiformats für die gesammelten Daten.

Es gibt noch viele weitere Fragen und Überlegungen, die Sie klären müssen, wobei die meisten stark davon abhängen, was Sie erreichen wollen. Eines ist sicher: „Zweimal messen, einmal schneiden“ gilt auch für das Web-Scraping.

2. Verhalte dich menschlicher

Wenn du wissen willst, ob ein Website-Besucher ein Mensch oder ein Bot ist, musst du dir nur sein Verhalten ansehen. Bots bewegen sich blitzschnell und interagieren nie mit der Seite, sofern sie nicht anders angewiesen werden. Daher sind sie leicht zu erkennen und zu blockieren.

Damit der Scraper nicht entdeckt wird, musst du ihm beibringen, sich eher wie ein normaler Besucher, also wie ein Mensch, zu verhalten. Das Schöne daran ist, dass Menschen sich auf ganz unterschiedliche Weise verhalten, sodass du beim Programmieren viel Freiheit hast. Hier sind einige Aktionen, die wir dir empfehlen:

  • Füge zufällige Pausen ein, als würde ein Mensch den Inhalt der Seite lesen. Eine Verzögerung von 5 bis 10 Sekunden reicht völlig aus.
  • Navigiere auf den Seiten in einer baumartigen Struktur. Wenn du mehrere untergeordnete Seiten scrapst, gehe immer über die übergeordnete Seite, wenn du weitergehst. Das ahmt eine Person nach, die auf eine Seite klickt, dann zurückgeht, dann auf die nächste klickt und so weiter.
  • Lassen Sie den Bot von Zeit zu Zeit auf zufällige Elemente klicken. Das machen doch alle Menschen so, nicht nur ich, oder?

Wie auch immer, der Grund, warum sich dein Bot auf eine bestimmte Art verhalten muss, ist, dass die Website seine Aktivitäten möglicherweise überwacht und protokolliert. Aber was, wenn die Website den Bot nicht nachverfolgen könnte? Lies den nächsten Punkt, um die Antwort zu erhalten.

3. Wechsle deine Proxys

Die Verwendung eines Proxys, um sicherzustellen, dass deine echte IP-Adresse nicht blockiert wird, ist eigentlich selbstverständlich. Genauso wie die Nutzung eines Proxys von einem bestimmten geografischen Standort, um auf regional eingeschränkte Inhalte zuzugreifen. Aber Proxys können mit den richtigen Tools noch viel mehr für dich tun!

Im Moment ist das Tool, das du brauchst, ein Server, um deinen Proxy-Pool zu rotieren. Damit wird jede Anfrage, die du sendest, einer zufälligen IP-Adresse aus dem Pool zugewiesen und an das Ziel gesendet. Auf diese Weise kannst du eine Website so oft scrapen, wie du willst, und jede Anfrage sieht so aus, als käme sie von einem anderen Ort und einer anderen Person.

Darüber hinaus stellen rotierende Proxys sicher, dass Sie nicht blockiert werden, wenn eine IP gesperrt wird, bis Sie die Proxys manuell wechseln. Eine Anfrage mag fehlschlagen, die anderen jedoch nicht. Ein gutes Tool wiederholt zudem alle fehlgeschlagenen Versuche; WebScrapingAPI wiederholt beispielsweise fehlgeschlagene API-Aufrufe, um sicherzustellen, dass Ihre Datenbank lückenlos ist.

Für bestmögliche Ergebnisse sollten Sie rotierende Residential-Proxys verwenden. Residential-IPs werden am seltensten bemerkt oder blockiert, und durch ihre Rotation machen Sie den Scraper noch schwerer zu erkennen. Beachten Sie jedoch, dass dies manchmal übertrieben sein kann. Wenn Sie nicht mit schwierigen Anti-Bot-Maßnahmen konfrontiert sind, können rotierende Datencenter-Proxys die Aufgabe genauso gut und kostengünstiger erledigen.

4. Verwenden Sie einen Headless-Browser

Ein Headless-Browser ist wie ein normaler Browser, nur dass er keine grafische Benutzeroberfläche hat. Um damit im Internet zu surfen, müssen Sie eine Befehlszeilenschnittstelle verwenden.

Sie sollten auf jeden Fall einen Headless-Browser in Ihre Web-Scraping-Pipeline aufnehmen, und dynamische Websites sind der Grund dafür. Viele Websites nutzen heute Javascript, um Besuchern ein besseres Nutzererlebnis zu bieten. Das einfachste Beispiel hierfür ist die Anpassung der Größe von Seitenelementen an die Bildschirmauflösung des Besuchers.

Das Problem ist, dass der wertvolle HTML-Code hinter JavaScript-Code verborgen ist. Um an ihn heranzukommen, müssen Sie das JS ausführen. Ein gewöhnlicher Scraper kann das nicht, aber alle Browser können es.

Ohne eine Browserumgebung ist das Scraping-Tool also nicht in der Lage, Daten von Websites zu sammeln, die JavaScript verwenden – und das sind derzeit die meisten, zumindest die wirklich wichtigen.

Wenn Sie einen Scraper von Grund auf neu erstellen, empfehle ich Ihnen, Puppeteer auszuprobieren. Hier finden Sie einige Details dazu, was es leistet und wie man es verwendet.

5. User-Agent-Header wechseln

User-Agent ist der Name eines HTTP-Request-Headers, der der von dir besuchten Website mitteilt, welchen Browser und welches Betriebssystem du verwendest. In gewisser Weise nutzen Websites diesen Header, um mehr darüber zu erfahren, wer sie besucht. Das ist ideal für Analysen und nebenbei auch nützlich, um Bots zu erkennen.

So kann eine User-Agent-Zeichenkette aussehen:

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0

Es gibt drei Hauptszenarien, die Sie vermeiden sollten:

  • Überhaupt keinen User-Agent zu haben. Die meisten Scraper verwenden keinen, was verdächtig ist und ein deutliches Zeichen dafür, dass es sich um Bots handelt. Stellen Sie sicher, dass Sie bei jeder Anfrage normal aussehende Header senden.
  • Einen veralteten User-Agent zu verwenden. Mit jedem neuen Update ändern Browser in der Regel den Header. Wenn Ihre Liste also einen User-Agent für Mozilla enthält, dieser aber durch ein Update geändert wurde, kann die besuchte Website erkennen, dass etwas faul ist.
  • Die Verwendung desselben Headers für jede Anfrage. Du könntest den normalen User-Agent deines tatsächlichen Browsers verwenden, aber das führt zu Hunderten verschiedener Anfragen, die von unterschiedlichen IPs stammen und genau denselben Fingerabdruck haben. Das ist ein riesiger Hinweis.

Hier noch ein Bonus-Tipp zu diesem Thema: Versuchen Sie es mit dem Googlebot-User-Agent. Natürlich möchte jede Website indexiert werden, daher lassen sie Googles Crawler gewähren. Ein Wort der Vorsicht jedoch: Auch deren Bots haben spezifische IPs und Verhaltensmuster, sodass der User-Agent allein keine Erfolgsgarantie ist.

6. Füge Anti-CAPTCHA-Funktionen hinzu

Wenn du gut scrapst, solltest du nur sehr selten auf CAPTCHAs stoßen. Falls doch, ist das sehr ärgerlich, da es deinen Scraper zum Stillstand bringen oder falsche Daten zurückgeben könnte (den Code der CAPTCHA-Seite).

Der Anti-CAPTCHA-Plan besteht aus zwei Teilen: Prävention und Behandlung. Sie sollten sich vor allem auf die Prävention konzentrieren, da dies bei weitem die effizientere Option ist. Hier ist, was Sie tun sollten:

  • Verwende Proxys, damit es so aussieht, als kämen deine Anfragen aus verschiedenen Quellen.
  • Ändere deine Request-Header (insbesondere den User-Agent). Andernfalls kannst du trotz der Verwendung mehrerer IP-Adressen immer noch erkannt werden.
  • Führen Sie den JavaScript-Code der Seite aus. Ein Headless-Browser ist hierfür die beste Wahl. Viele Websites zeigen jedem Besucher, der dies nicht tut, ein CAPTCHA an, da dies ein ungewöhnliches Verhalten ist.

Verwenden Sie also im Wesentlichen die Tipps Nr. 3, Nr. 4 und Nr. 5.

Wenn der Scraper dennoch auf Probleme stößt, benötigen Sie einen CAPTCHA-Solver. Achten Sie bei der Auswahl eines Web-Scraping-Tools darauf, dass diese Funktion bereits integriert ist. Andernfalls ist es technisch zwar möglich, einen Solver selbst zu integrieren, doch das bedeutet zusätzlichen Programmieraufwand und Zeitverlust. Nur zur Info: Unsere API verfügt über diese Funktionalität, nicht dass sie überhaupt oft auf CAPTCHAs stoßen würde.

7. Erstellen Sie eine URL-Liste

Wenn Sie einen Scraping-Auftrag starten, werden Sie wahrscheinlich eine Liste mit URLs erstellen, die wertvolle Informationen enthalten. Hier ist ein Vorschlag: Anstatt die URLs einfach an den Scraper zu senden, führen Sie eine Liste und markieren Sie alle Links, die Sie bereits gecrawlt haben. Der Übersichtlichkeit halber können Sie auch die gescrapten Daten zusammen mit der URL speichern.

Der Grund dafür ist einfach: Wenn Ihr Computer abstürzt oder ein anderes unerwartetes Ereignis eintritt, wissen Sie immer noch, welche Daten Sie bereits haben, und vermeiden so unnötiges erneutes Scraping.

Unser Rat ist, ein Skript für die Datenerfassung und -aufbewahrung zu schreiben. Die manuelle Aktualisierung der Liste bedeutet viel mühsame Arbeit, und du wirst ohnehin nicht mit dem Bot mithalten können.

8. Lerne die Seitenstrukturen kennen

Das Sammeln weiterer Daten nimmt natürlich mehr Zeit in Anspruch. Eine Möglichkeit, die Effizienz zu steigern, besteht also darin, genau zu bestimmen, welche Informationen der Scraper erfassen soll. Theoretisch einfach, aber jede Website und jede Webseite ist einzigartig. Um den Aufwand zu reduzieren und Zeit zu sparen, musst du ein paar Dinge darüber lernen, wie deine Zielseiten strukturiert sind.

So geht’s:

  • Gehen Sie auf die Seite;
  • Klicken Sie mit der rechten Maustaste auf den gewünschten Text und wählen Sie „Element untersuchen“;
  • Beachten Sie, wie diese Informationen verschachtelt sind, in welchen Klassen sie sich befinden und unter welchem Tag;
  • Suchen Sie nach strukturellen Mustern auf anderen Seiten, die für Sie von Interesse sind. Wahrscheinlich können Sie ein Skript erstellen, das alle benötigten Informationen von der gesamten Website sammelt.

Nachdem Sie diese Schritte durchlaufen haben, wird es für Sie viel einfacher sein, nur die Details zu extrahieren, die Sie benötigen. Der Vorteil ist, dass Sie sich nicht mehr mit irrelevanten HTML-Elementen herumschlagen müssen, die Ihre Dokumente überladen.

Das Verständnis des Layouts ist besonders nützlich für das Scraping von Produktinformationen. Produktseiten auf derselben Website sind alle ähnlich, wenn nicht sogar identisch strukturiert. Finden Sie die Logik, und Sie können viel schneller extrahieren und analysieren.

9. Füge eine Verzögerung zwischen den Anfragen ein

Der Sinn eines Web-Scrapers besteht darin, Daten schneller zu sammeln, als es ein Mensch könnte. Das verstehen wir, aber Geschwindigkeit hat einen unerwünschten Nebeneffekt: Es wird sonnenklar, dass die Anfragen von einem Bot gesendet werden.

Denken Sie daran, was wir über das Verhalten wie ein normaler Besucher gesagt haben: Wenn der Scraper auffällt, ist es viel wahrscheinlicher, dass er blockiert wird. Aber keine Sorge, Sie müssen lediglich zufällige Verzögerungen einfügen, wenn Sie dieselbe IP-Adresse für mehrere gleichzeitige oder aufeinanderfolgende Besuche verwenden.

Denken Sie daran: Tun Sie dies, wenn Sie denselben Proxy verwenden. Wenn Sie nach jeder Anfrage die IP-Adresse und die Header ändern, sollte die Verzögerung nicht notwendig sein. Wenn Sie jedoch mit einer IP-Adresse angemeldet sind, sollten Sie bei dieser bleiben, was bedeutet, dass Sie auch die Verzögerungen benötigen.

Stelle sicher, dass der Timer leicht variiert, damit die Verzögerungen zufällig sind. Etwas zwischen 5 und 10 Sekunden sollte gut funktionieren.

10. Speichere wichtige Seiten im Cache

In manchen Fällen möchtest du Seiten, die du zuvor gecrawlt hast, erneut aufrufen, um weitere Informationen zu erhalten. Anstatt das zu tun, speichere die Seite beim ersten Besuch im Cache, dann hast du alle Daten bereits gespeichert.

Selbst mit dem fortschrittlichsten Web-Scraper besteht immer noch die Möglichkeit, dass der Bot beim ersten Versuch keine Daten erhält, und selbst wenn er dies tut, würdest du immer noch unnötigen Aufwand betreiben. Lade einfach den gesamten HTML-Code auf einmal herunter, und dann kannst du alle benötigten Informationen aus der gespeicherten Version extrahieren.

Du kannst zum Beispiel eine Produktseite zwischenspeichern, damit sie immer griffbereit ist. Wenn du heute die Produktspezifikationen brauchst, morgen aber vielleicht den Preis, sind die Daten bereits gesammelt und warten darauf, verarbeitet zu werden.

Beachte jedoch, dass dies nur für statische Informationen funktioniert! Wenn du Aktienkurse benötigst, musst du weiterhin aktuelle Daten extrahieren, da die zwischengespeicherte Version schnell veraltet sein wird.

11. Sei vorsichtig beim Einloggen

Die benötigten Daten könnten hinter einer Anmeldeseite verborgen sein. Man denke beispielsweise an Social-Media-Plattformen. Sicher, man kann auch ohne Konto ein paar Bruchteile von Inhalten abrufen, aber das ist mühsamer, und vielleicht möchte man etwas, das nur sichtbar ist, wenn man Teil einer Gruppe oder einer Freundesliste ist. Kurz gesagt: Man muss sich möglicherweise anmelden, und das bringt einige Probleme mit sich.

Alle Website-Nutzer mit einem Konto müssen den Nutzungsbedingungen zustimmen. In diesen Bedingungen kann eine Klausel enthalten sein, die die Verwendung von Bots, automatisierten Tools oder Web-Scrapern ausdrücklich verbietet. In diesem Fall würde das Extrahieren von Daten eindeutig gegen die Regeln verstoßen, denen der Nutzer zugestimmt hat.

Ein weiterer Punkt, den du beachten solltest, ist, dass Websites zwar nicht besonders aufmerksam auf nicht registrierte Besucher achten, aber den von angemeldeten Nutzern gesendeten Cookies mehr Aufmerksamkeit schenken. Im Grunde genommen wird dein Bot also stärker beobachtet. Eindeutiges Bot-Verhalten oder verräterische Cookies erhöhen die Wahrscheinlichkeit, dass dein Scraper blockiert wird.

Was Sie tun sollten:

  • Lesen Sie die Nutzungsbedingungen sorgfältig durch und stellen Sie sicher, dass Sie nicht gegen sie verstoßen.
  • Stellen Sie sicher, dass Sie alle anderen Tipps in diesem Artikel befolgen, insbesondere diejenigen zu Proxys, menschlichem Verhalten, JS-Rendering und Request-Headern.

12. Vermeiden Sie Schäden an der Website

Die meisten Webadministratoren mögen keine Scraper auf ihren Websites. Für manche sind Bots ein kleines Ärgernis, für andere eine große Gefahr. Tatsache ist, dass Hacker und andere Unruhestifter Bots nutzen, um Probleme und Unfug zu verursachen, wie zum Beispiel das Abstürzen von Websites oder den Versuch, vertrauliche Daten zu stehlen.

Selbst wenn Ihre Absichten völlig freundlich sind, können Sie versehentlich Probleme verursachen. Unzählige gleichzeitige Anfragen könnten den Server zum Absturz bringen. Hier sind daher einige bewährte Vorgehensweisen, um sicherzustellen, dass Sie kein Chaos hinterlassen:

  • Verringern Sie die Anzahl der Anfragen, um einen Absturz der gesamten Website zu vermeiden;
  • Lesen Sie die Robots.txt-Datei, in der erklärt wird, welche Aktionen Bots ausführen dürfen. Es handelt sich dabei zwar nicht um ein rechtsverbindliches Dokument, aber es drückt die Wünsche des Website-Betreibers aus.
  • Achten Sie darauf, wie Sie gescrapte Daten verwenden. Das Übernehmen und erneute Veröffentlichen von Inhalten ist beispielsweise sowohl schädlich als auch illegal, da diese Inhalte urheberrechtlich geschützt sind.
  • Bitten Sie den Eigentümer nach Möglichkeit um Erlaubnis, Informationen von der Website zu sammeln.

Durch freundliches und ethisches Handeln können Sie dazu beitragen, dass Bots als das nützliche Werkzeug angesehen werden, das sie sind, und nicht als eine Art digitale Plünderer.

Bonus-Tipp: Wählen Sie das richtige Web-Scraping-Tool

Es gibt keine perfekte Formel für das Web-Scraping, aber es gibt Faktoren, die berücksichtigt werden müssen, um zum richtigen Zeitpunkt die besten Ergebnisse zu erzielen. Dieser Artikel wurde verfasst, um alle Bedenken, jede geschriebene oder ungeschriebene Regel und jede bewährte Vorgehensweise anzusprechen. Eine API wird den vielen täglichen Scraping-Problemen Abhilfe schaffen, weshalb unser erster Trick immer die Automatisierung sein wird.

Scrapen Sie mit Bedacht und genießen Sie die Ergebnisse Ihrer Arbeit mit 1000 kostenlosen Aufrufen von uns!

Während einige der oben genannten Tipps sich darauf beziehen, wie Sie das Scraping-Tool nutzen, lassen sich viele durch die Software selbst integrieren und automatisieren, sodass Sie sich auf Ihre eigenen Aufgaben und Ziele konzentrieren können. Deshalb sind wir der Meinung, dass die Wahl des richtigen Programms genauso wichtig ist wie alle besprochenen Tipps, wenn nicht sogar noch wichtiger.

Ich bin ehrlich der Meinung, dass WebScrapingAPI eine hervorragende Option ist, zumal Sie die API mit einem kostenlosen Tarif ausprobieren und sich selbst davon überzeugen können, wie sie funktioniert, bevor Sie Geld investieren.

Wenn Sie sich ein wenig umsehen möchten, haben wir einen umfangreichen Einkaufsführer mit 20 Web-Scraping-Tools verfasst – schauen Sie doch mal rein!

Über den Autor
Anda Miuțescu, Autor für technische Inhalte @ WebScrapingAPI
Anda MiuțescuAutor für technische Inhalte

Anda Miuțescu ist Technical Content Writer bei WebScrapingAPI und verfasst verständliche, nützliche Inhalte, die Entwicklern helfen, das Produkt und seine Funktionen besser zu verstehen.

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.