So crawlen Sie eine Website: Eine Schritt-für-Schritt-Anleitung zum Crawlen mit Python und JavaScript sowie unsere 12 Tipps, wie Sie 2023 beim Crawlen nicht blockiert werden

Der abenteuerliche Einstieg in die Welt des Web-Crawlings kann sowohl aufregend als auch herausfordernd sein, wenn man sich auf der Suche nach wertvollen Daten durch die labyrinthischen Gassen des Internets bewegt. Im riesigen digitalen Universum hat sich die Kunst des Web-Crawlings zu einer entscheidenden Fähigkeit entwickelt, die es uns ermöglicht, effizient Informationen zu sammeln, Erkenntnisse zu gewinnen und das stetig wachsende World Wide Web zu verstehen.

In diesem aufschlussreichen Artikel durchqueren wir das komplexe Terrain des Web-Crawlings, decken die Unterschiede zwischen Web-Crawling und Web-Scraping auf und erkunden eine Reihe von Strategien und Technologien, mit denen Sie Ihre Fähigkeiten im Web-Crawling verbessern können.

Von der dynamischen Welt der JavaScript-Websites bis hin zur leistungsstarken Einfachheit von Python führen wir Sie durch zahlreiche Tipps und Techniken, damit Ihre Web-Crawling-Expedition reibungslos, effektiv und ungehindert verläuft.

Inhaltsverzeichnis

Schnallen Sie sich also an und machen Sie sich bereit für eine aufregende Reise in die faszinierende Welt des Web-Crawlings!

Web-Crawling vs. Web-Scraping

Obwohl Web-Scraping und Web-Crawling oft für dasselbe gehalten werden und beide beim Data Mining zum Einsatz kommen, gibt es wesentliche Unterschiede. Wir werden diese Unterschiede erläutern und Ihnen dabei helfen, herauszufinden, welcher Ansatz am besten zu Ihren Anforderungen und Geschäftszielen passt.

Wesentliche Unterschiede

Einfach ausgedrückt: Web-Crawling ist das, was Suchmaschinen tun: Sie bewegen sich durchs Web, suchen nach verfügbaren Informationen und folgen jedem zugänglichen Link. Bei diesem allgemeinen Prozess geht es darum, möglichst viele Informationen (oder sogar alle) von einer bestimmten Website zu erfassen. Im Wesentlichen macht Google genau das – es betrachtet die gesamte Webseite und indexiert alle verfügbaren Daten.

Web-Scraping hingegen wird eingesetzt, wenn Sie die gesammelten Informationen herunterladen möchten. Web-Scraping (auch als Web-Datenextraktion bezeichnet) ist ein gezielterer Prozess. Indem Sie Befehle anpassen und Scraping-Proxys verwenden, können Sie bestimmte Daten von Ihrer Zielwebsite extrahieren. Anschließend können Sie die Ergebnisse in einem geeigneten Format wie JSON oder Excel herunterladen.

In manchen Fällen können Web-Crawling und Web-Scraping gemeinsam eingesetzt werden, um ein einziges Ziel zu erreichen, und dienen dabei im Wesentlichen als erster und zweiter Schritt Ihres Prozesses. Durch die Kombination beider Methoden können Sie mit einem Crawler große Mengen an Informationen von umfangreichen Websites sammeln und später mit einem Scraper die spezifischen Daten extrahieren und herunterladen, die Sie benötigen.

4 Web-Crawling-Strategien

Im Allgemeinen besuchen Web-Crawler aufgrund ihres Crawl-Budgets nur einen Teil der Webseiten. Dieses kann anhand von Faktoren wie der maximalen Seitenzahl pro Domain, der Crawling-Tiefe oder der Dauer festgelegt werden.

Viele Websites bieten eine robots.txt-Datei, in der festgelegt ist, welche Bereiche der Website gecrawlt werden dürfen und welche nicht. Darüber hinaus gibt es die sitemap.xml, die detaillierter als robots.txt ist, Bots bei der Auswahl der zu crawlenden Pfade anleitet und zusätzliche Metadaten für jede URL bereitstellt.

Zu den gängigen Einsatzbereichen von Web-Crawlern gehören:

  1. Suchmaschinen wie Googlebot, Bingbot und Yandex Bot sammeln HTML-Daten von einem großen Teil des Webs und indexieren diese, damit sie leicht durchsuchbar sind.
  2. SEO-Analysetools erfassen nicht nur HTML, sondern auch Metadaten wie Antwortzeit und Antwortstatus, um fehlerhafte Seiten zu identifizieren und Links zwischen Domains für die Backlink-Analyse nachzuverfolgen.
  3. Tools zur Preisüberwachung crawlen E-Commerce-Websites, um Produktseiten zu finden und Metadaten, insbesondere Preise, zu extrahieren. Diese Produktseiten werden anschließend regelmäßig erneut aufgerufen.
  4. Common Crawl unterhält ein öffentliches Repository mit Web-Crawl-Daten, darunter das Archiv vom Mai 2022 mit 3.45 Milliarden Webseiten.

So crawlen Sie JavaScript-Websites

Das Crawlen von JavaScript-Websites kann schwieriger sein als das Crawlen statischer HTML-Seiten, da die Inhalte häufig durch JavaScript-Code geladen und verändert werden. Um solche Websites zu crawlen, benötigen Sie einen Headless-Browser, der JavaScript ausführen und den Seiteninhalt darstellen kann. Eine beliebte Wahl für diese Aufgabe ist die Kombination aus der Puppeteer-Bibliothek und der Node.js-Laufzeitumgebung.

Hier finden Sie eine Schritt-für-Schritt-Anleitung zum Crawlen von JavaScript-Websites mit Puppeteer und Node.js:

1. Node.js installieren

Laden Sie die neueste Version von Node.js von der offiziellen Website herunter und installieren Sie sie (https://nodejs.org/).

2. Ein neues Projektverzeichnis erstellen

Erstellen Sie ein neues Verzeichnis für Ihr Projekt und wechseln Sie über die Befehlszeile dorthin.

mkdir js-crawler cd js-crawler

3. Ein neues Node.js-Projekt initialisieren

Führen Sie im Projektverzeichnis den folgenden Befehl aus, um eine neue Datei package.json mit den Standardeinstellungen zu erstellen.

npm init -y

4. Puppeteer installieren

Installieren Sie Puppeteer, indem Sie im Projektverzeichnis den folgenden Befehl ausführen

npm install puppeteer

5. Eine neue JavaScript-Datei erstellen

Erstellen Sie eine neue Datei mit dem Namen

crawler.js

in Ihrem Projektverzeichnis. Sie enthält den Code zum Crawlen der JavaScript-Website.

6. Den Crawler-Code schreiben

Öffnen Sie

crawler.js

und fügen Sie den folgenden Code hinzu:

const puppeteer = require('puppeteer');async function crawlJavaScriptWebsite(url) {

Starten Sie eine neue Browserinstanz

constbrowser =awaitpuppeteer.launch({headless:true});

Erstellen Sie eine neue Seite im Browser

constpage =awaitbrowser.newPage();

Rufen Sie die Ziel-URL auf

awaitpage.goto(url, {waitUntil:'networkidle2'})

Extrahieren Sie Daten von der Seite mit

evaluate()constdata =awaitpage.evaluate(() =>{

Schreiben Sie hier Ihren benutzerdefinierten JavaScript-Code, um die gewünschten Daten zu extrahieren. Extrahieren wir beispielsweise alle Überschriften (h1-Elemente) der Seite.

constheadings =Array.from(document.querySelectorAll('h1')).map(heading=>heading.textContent);return{ headings, }; });

Schließen Sie den Browser

awaitbrowser.close();

Geben Sie die extrahierten Daten zurück

returndata; }

Beispiel für die Verwendung:

crawlJavaScriptWebsite('https://example.com/') .then(data=>console.log(data)) .catch(err=>console.error(err));

Ersetzen Sie die

https://example.com/

URL durch die URL der Zielwebsite und passen Sie die

page.evaluate()

Funktion an, um die gewünschten Daten zu extrahieren.

7. Den Crawler ausführen

Führen Sie im Projektverzeichnis den folgenden Befehl aus, um den Crawler zu starten:

node crawler.js

Das Skript startet einen Headless-Browser, ruft die Ziel-URL auf und führt den im

page.evaluate()

Funktionsblock angegebenen JavaScript-Code aus. Die extrahierten Daten werden in der Konsole ausgegeben.

Beachten Sie, dass dies ein einfaches Beispiel für das Crawlen einer JavaScript-Website ist. Für fortgeschrittenere Anwendungsfälle müssen Sie möglicherweise mit der Seite interagieren, AJAX-Anfragen verarbeiten, auf der Seite scrollen oder CAPTCHAs und Cookies behandeln.

So crawlen Sie das Web mit Python

Das Crawlen einer Website mit Python umfasst das Abrufen von Webseiten, das Parsen ihrer Inhalte und das Folgen von Links zu anderen Seiten. In diesem Leitfaden verwenden wir zwei beliebte Python-Bibliotheken: Requests und Beautiful Soup. Dieser Leitfaden setzt voraus, dass Python installiert ist und Sie über grundlegende Kenntnisse der Python-Programmierung verfügen.

Schritt 1: Erforderliche Bibliotheken installieren

Installieren Sie die Bibliotheken Requests und Beautiful Soup mit pip:

pip install requests beautifulsoup4

Schritt 2: Bibliotheken importieren

Importieren Sie die erforderlichen Bibliotheken in Ihr Python-Skript:

importrequestsfrombs4importBeautifulSoup

Schritt 3: Eine Funktion zum Abrufen des Webseiteninhalts erstellen

Erstellen Sie mit der Requests-Bibliothek eine Funktion zum Abrufen des Webseiteninhalts:

deffetch_page(url):response = requests.get(url)ifresponse.status_code ==200:returnresponse.textelse:print(f"Failed to fetch{url}(status code{response.status_code})")returnNone

Schritt 4: Eine Funktion zum Parsen des Webseiteninhalts erstellen

Erstellen Sie mit der Bibliothek Beautiful Soup eine Funktion zum Parsen des Webseiteninhalts:

defparse_page(html): soup = BeautifulSoup(html,"html.parser")returnsoup

Erstellen Sie eine Funktion, um alle Links aus dem geparsten Webseiteninhalt zu extrahieren:

defextract_links(soup, base_url):links = []fora_taginsoup.find_all("a"):href = a_tag.get("href")ifhrefandnothref.startswith("#"):ifnothref.startswith("http"):href = base_url + hreflinks.append(href)returnlinks

Schritt 6: Eine Funktion zum Crawlen der Website erstellen

Erstellen Sie eine Funktion, um die Website rekursiv zu crawlen:

defcrawl_website(url, max_depth=2, depth=0):ifdepth > max_depth:returnhtml = fetch_page(url)ifnothtml:returnsoup = parse_page(html)links = extract_links(soup, url)print(f"{' ' * depth}[{depth}]{url}")forlinkinlinks:crawl_website(link, max_depth, depth +1)

Schritt 7: Den Crawler ausführen

Führen Sie den Crawler aus, indem Sie die Funktion

crawl_website

mit der gewünschten URL und der maximalen Tiefe aufrufen:

if__name__ =="__main__":start_url ="https://example.com/"max_depth =2crawl_website(start_url, max_depth)

Diese Schritt-für-Schritt-Anleitung zeigt, wie Sie eine Website mit Python crawlen. Sie können die Funktion

crawl_website

anpassen, um bestimmte Website-Strukturen zu berücksichtigen, Logik zum Speichern der extrahierten Informationen hinzuzufügen oder erweiterte Crawling-Funktionen wie die Verarbeitung von robots.txt, eine Ratenbegrenzung oder die Parallelisierung von Anfragen zu implementieren.

12 Tipps, wie Sie eine Website crawlen, ohne blockiert zu werden

Dies sind die wichtigsten Strategien, um Websites ohne Blockierungen zu crawlen:

#1: Überprüfen Sie das Robots Exclusion Protocol

Bevor Sie eine Website crawlen oder scrapen, stellen Sie sicher, dass das Ziel die Datenerfassung auf seiner Seite erlaubt. Prüfen Sie die Datei des Robots Exclusion Protocol (robots.txt) der Website und halten Sie sich an deren Vorschriften.

Auch wenn die Website Crawling erlaubt, sollten Sie respektvoll vorgehen und der Website keinen Schaden zufügen. Halten Sie sich an die im Robots Exclusion Protocol angegebenen Vorschriften, crawlen Sie außerhalb der Hauptverkehrszeiten, begrenzen Sie die Anzahl der Anfragen von einer einzelnen IP-Adresse und legen Sie eine Verzögerung zwischen den Anfragen fest.

Doch selbst wenn die Website Web Scraping erlaubt, können Sie dennoch auf Blockierungen stoßen. Daher ist es wichtig, auch weitere Schritte zu befolgen. Eine ausführlichere Anleitung finden Sie in unserem Python-Tutorial zu Web Scraping.

#2: Verwenden Sie einen Proxyserver

Web Crawling wäre ohne Proxys nahezu unmöglich. Wählen Sie einen renommierten Proxy-Anbieter und entscheiden Sie sich je nach Aufgabe für Rechenzentrums- oder Residential-IP-Proxys.

Ein Vermittler zwischen Ihrem Gerät und der Zielwebsite verringert die Wahrscheinlichkeit, dass Ihre IP-Adresse blockiert wird, gewährleistet Anonymität und ermöglicht Ihnen den Zugriff auf Websites, die in Ihrer Region möglicherweise nicht verfügbar sind. Wenn Sie sich beispielsweise in Deutschland befinden, benötigen Sie möglicherweise einen US-Proxy, um auf Webinhalte in den Vereinigten Staaten zuzugreifen.

Die besten Ergebnisse erzielen Sie mit einem Proxy-Anbieter, der über einen großen IP-Pool und eine breite Auswahl an Standorten verfügt.

#3: Rotieren Sie IP-Adressen

Wenn Sie einen Proxy-Pool verwenden, ist es wichtig, Ihre IP-Adressen zu rotieren.

Wenn Sie zu viele Anfragen von derselben IP-Adresse senden, erkennt die Zielwebsite Sie bald als Bedrohung und blockiert Ihre IP-Adresse. Durch die Proxy-Rotation können Sie den Anschein erwecken, mehrere verschiedene Internetnutzer zu sein, und so die Wahrscheinlichkeit einer Blockierung verringern.

Alle Oxylabs Residential Proxies rotieren IPs. Wenn Sie jedoch Datacenter Proxies verwenden, sollten Sie einen Proxy-Rotator-Dienst nutzen. Wir rotieren auch IPv6- und IPv4-Proxys. Wenn Sie sich für die Unterschiede zwischen IPv4 und IPv6 interessieren, lesen Sie den von meiner Kollegin Iveta verfassten Artikel.

#4: Verwenden Sie echte User-Agents

Die meisten Server, auf denen Websites gehostet werden, können die Header der HTTP-Anfragen untersuchen, die von Crawling-Bots erzeugt werden. Dieser HTTP-Anfrageheader, der User-Agent genannt wird, enthält verschiedene Informationen – vom Betriebssystem und der Software bis hin zum Anwendungstyp und seiner Version.

Server können verdächtige User-Agents leicht erkennen. Echte User-Agents enthalten beliebte HTTP-Anfragekonfigurationen, die von echten Besuchern verwendet werden. Um eine Blockierung zu vermeiden, sollten Sie Ihren User-Agent so anpassen, dass er einem echten User-Agent ähnelt.

Da jede Anfrage eines Webbrowsers einen User-Agent enthält, sollten Sie den User-Agent regelmäßig wechseln.

Außerdem ist es wichtig, aktuelle und besonders beliebte User-Agents zu verwenden. Wenn Sie Anfragen mit einem fünf Jahre alten User-Agent einer nicht mehr unterstützten Firefox-Version stellen, wirkt das äußerst verdächtig. Im Internet finden Sie öffentliche Datenbanken, die zeigen, welche User-Agents derzeit am beliebtesten sind. Wir haben auch eine eigene, regelmäßig aktualisierte Datenbank. Kontaktieren Sie uns, wenn Sie darauf zugreifen möchten.

#5: Konfigurieren Sie Ihren Fingerprint korrekt

Anti-Scraping-Mechanismen werden immer ausgefeilter, und manche Websites nutzen das Transmission Control Protocol (TCP) oder IP-Fingerprinting, um Bots zu erkennen.

Beim Scraping im Web hinterlässt TCP verschiedene Parameter. Diese werden vom Betriebssystem oder Gerät des Endnutzers festgelegt. Wenn Sie sich fragen, wie Sie beim Scraping vermeiden können, auf eine Blacklist zu geraten, sollten Sie sicherstellen, dass Ihre Parameter konsistent sind. Alternativ können Sie Web Unblocker verwenden – eine KI-gestützte Proxy-Lösung mit dynamischer Fingerprinting-Funktion. Web Unblocker kombiniert zahlreiche Fingerprinting-Variablen so, dass die Fingerprints selbst dann, wenn ein einzelner am besten funktionierender Fingerprint erkannt wird, weiterhin zufällig erscheinen und Anti-Bot-Prüfungen bestehen können.

#6: Achten Sie auf Honeypot-Fallen

Seien Sie vorsichtig bei Honeypot-Fallen. Dabei handelt es sich um Links im HTML-Code, die von Web Scrapern erkannt werden können, für echte Nutzer jedoch unsichtbar sind. Diese Fallen dienen dazu, Webcrawler zu identifizieren und zu blockieren, da nur Roboter diesen Links folgen würden. Auch wenn das Einrichten von Honeypots viel Arbeit erfordert, können manche Zielwebsites sie verwenden, um Webcrawler zu erkennen. Seien Sie also vorsichtig, wenn Ihre Anfrage blockiert wird und ein Crawler erkannt wurde.

#7: Nutzen Sie CAPTCHA-Lösungsdienste

CAPTCHAs stellen eine große Herausforderung für Web Crawling dar, da Besucher Rätsel lösen müssen, um zu bestätigen, dass sie Menschen sind. Diese Rätsel enthalten oft Bilder, die für Computer schwer zu entziffern sind. Um CAPTCHAs zu umgehen, nutzen Sie spezielle CAPTCHA-Lösungsdienste oder sofort einsatzbereite Crawling-Tools wie das Data-Crawling-Tool von Oxylabs, das CAPTCHAs löst und sofort einsatzbereite Ergebnisse liefert. Verdächtiges Verhalten kann dazu führen, dass die Zielwebsite Sie auffordert, ein CAPTCHA zu lösen.

#8: Ändern Sie das Crawling-Muster

Um eine Blockierung zu vermeiden, ändern Sie das Navigationsmuster Ihres Crawlers, damit es weniger vorhersehbar wirkt. Sie können zufällige Klicks, Scrollbewegungen und Mausbewegungen einbauen, um das Surfverhalten eines gewöhnlichen Nutzers nachzuahmen. Orientieren Sie sich bei der Umsetzung an den Best Practices und überlegen Sie, wie ein typischer Nutzer auf der Website navigieren würde. Wenden Sie diese Grundsätze auf das Tool an. Beispielsweise ist es logisch, vor dem Aufrufen von Unterseiten zuerst die Startseite zu besuchen.

#9: Verringern Sie die Scraping-Geschwindigkeit

Um das Risiko einer Blockierung zu verringern, verlangsamen Sie den Scraper, indem Sie zufällige Pausen zwischen Anfragen einfügen oder vor einer Aktion Wartebefehle ausführen. Wenn die Anfragerate für die URL begrenzt ist, halten Sie sich an die Einschränkungen der Website und verringern Sie die Scraping-Geschwindigkeit, um eine Drosselung der Anfragen zu vermeiden.

#10: Crawlen Sie außerhalb der Hauptverkehrszeiten

Crawler sind schneller als normale Nutzer und können die Serverauslastung erheblich beeinflussen. Crawling zu Zeiten hoher Auslastung kann die Nutzererfahrung durch eine Verlangsamung des Dienstes beeinträchtigen. Um dies zu vermeiden, crawlen Sie außerhalb der Hauptverkehrszeiten, beispielsweise kurz nach Mitternacht (entsprechend der Ortszeit des Dienstes), um die Serverlast zu verringern.

#11: Vermeiden Sie das Scraping von Bildern

Das Scraping von Bildern kann riskant sein, da sie oft datenintensiv sind und urheberrechtlich geschützt sein können. Außerdem sind Bilder häufig in JavaScript-Elementen verborgen, was den Scraping-Prozess komplexer machen und den Web Scraper verlangsamen kann. Um Bilder aus JS-Elementen zu extrahieren, ist ein aufwendigeres Scraping-Verfahren erforderlich.

#12: Verwenden Sie einen Headless-Browser

Ein Headless-Browser funktioniert wie ein normaler Browser, jedoch ohne grafische Benutzeroberfläche. Damit können Inhalte gescrapt werden, die durch das Rendern von JavaScript-Elementen geladen werden. Die am häufigsten verwendeten Browser, Chrome und Firefox, verfügen über Headless-Modi, mit denen sich Websites scrapen lassen, ohne Blockierungen auszulösen.

Video-Tutorial zum Crawlen einer Website

In diesem Oxylabs-Tutorial lernst du die Grundlagen des Web-Crawlings und seine Bedeutung für die Datenerfassung kennen und erfährst mehr über ethische und rechtliche Aspekte. Es stellt beliebte Tools wie Scrapy, Beautiful Soup und Selenium vor und hilft dir dabei, das für deine Anforderungen beste Tool auszuwählen.

Das Tutorial hilft dir, die Struktur einer Website zu verstehen, einen einfachen Web-Crawler zu erstellen und die benötigten Informationen zu extrahieren. Außerdem erinnert es dich daran, die Regeln für gutes Web-Scraping zu befolgen, etwa die Vorgaben in robots.txt zu respektieren und Server nicht zu überlasten.

Das Video hilft dir auch dabei, Herausforderungen zu bewältigen, etwa Daten von dynamischen Seiten abzurufen, mit mehreren Seiten umzugehen und Sperren zu vermeiden. Es zeigt dir, wie du deine Daten speichern und organisieren kannst, und gibt Tipps, wie du dein Web-Crawling-Projekt ausbauen und effizienter gestalten kannst. Abschließend erinnert es dich daran, stets ethische und rechtliche Richtlinien einzuhalten.

Fazit

Am Ende unserer spannenden Erkundung der Welt des Web-Crawlings wird klar: Diese Kunst zu beherrschen ist, als hielte man eine Schatzkarte in der riesigen, sich ständig wandelnden Landschaft des Internets in den Händen. Wir haben uns mit den Feinheiten beschäftigt, die Web-Crawling von Web-Scraping unterscheiden, verschiedene Strategien entdeckt und uns in die dynamische Welt von JavaScript-Websites und Python-gestütztem Web-Crawling vorgewagt.

Unsere Schatzkiste voller Tipps und Ratschläge sorgt dafür, dass deine Web-Crawling-Bemühungen verantwortungsvoll und ethisch bleiben und du die Fallstricke und Hindernisse vermeidest, die unterwegs auftreten können. Wenn du also mit dem Wissen und der Weisheit aus diesem umfassenden Artikel in den grenzenlosen digitalen Ozean aufbrichst, denke daran: Die Fähigkeit, die Möglichkeiten des Web-Crawlings zu nutzen, verschafft dir einen Vorsprung vor der Konkurrenz und erschließt dir die verborgenen Schätze in den Tiefen der digitalen Welt.