Sich auf die abenteuerliche Reise des Web-Crawlings zu begeben, kann sowohl spannend als auch herausfordernd sein, wenn man auf der Suche nach wertvollen Daten durch die labyrinthischen Gassen des Internets navigiert. 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 ermitteln, Erkenntnisse zu gewinnen und das ständig wachsende World Wide Web zu verstehen.

In diesem aufschlussreichen Artikel werden wir das komplexe Terrain des Web-Crawlings erkunden, die Unterschiede zwischen Web-Crawling und Web-Scraping aufdecken und gleichzeitig eine Reihe von Strategien und Technologien erkunden, die Ihre Fähigkeiten beim Web-Crawling verbessern.

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

Inhaltsverzeichnis

Also schnallen Sie sich an und bereiten Sie sich auf eine aufregende Reise in die fesselnde Welt des Web-Crawlings vor!

Web-Crawling vs. Web-Scraping

Während Web Scraping und Web Crawling oft als dasselbe angesehen werden und beide für das Data Mining verwendet werden, weisen sie wesentliche Unterschiede auf. Wir werden diese Unterschiede untersuchen und Ihnen dabei helfen, herauszufinden, welcher Ansatz Ihren Anforderungen und Geschäftszielen am besten entspricht.

Hauptunterschiede

Einfach ausgedrückt ist Web-Crawling das, was Suchmaschinen tun: Sie navigieren durch das Web, suchen nach allen verfügbaren Informationen und folgen jedem zugänglichen Link. Dieser allgemeine Prozess zielt darauf ab, so viele Informationen wie möglich (oder sogar alle) von einer bestimmten Website zu sammeln. Im Wesentlichen ist es genau das, was Google tut: Es betrachtet die gesamte Webseite und indiziert alle verfügbaren Daten.

Andererseits wird Web Scraping eingesetzt, wenn Sie die gesammelten Informationen herunterladen möchten. Web Scraping (auch als Webdatenextraktion bekannt) ist ein fokussierterer Prozess. Durch die Anpassung von Befehlen und die Verwendung von Scraping-Proxys können Sie spezifische Daten von Ihrer Zielwebsite extrahieren. Anschließend können Sie die Ergebnisse in einem geeigneten Format herunterladen, beispielsweise JSON oder Excel.

Web-Crawling vs. Web-Scraping

In einigen Fällen können sowohl Web-Crawling als auch Web-Scraping verwendet werden, um ein einziges Ziel zu erreichen und im Wesentlichen als Schritte eins und zwei in Ihrem Prozess zu fungieren. Durch die Kombination beider können Sie mit einem Crawler große Informationsmengen von großen Websites sammeln und später mit einem Scraper die spezifischen Daten, die Sie benötigen, extrahieren und herunterladen.

4 Web-Crawling-Strategien

Im Allgemeinen besuchen Webcrawler nur einen Teil der Webseiten basierend auf ihrem Crawler-Budget, das durch Faktoren wie die maximale Anzahl von Seiten pro Domain, Tiefe oder Dauer bestimmt werden kann.

Viele Websites bieten eine robots.txt-Datei an, die angibt, welche Teile der Website gecrawlt werden können und welche tabu sind. Darüber hinaus gibt es sitemap.xml, das detaillierter ist als robots.txt, Bots anleitet, welche Pfade gecrawlt werden sollen, und zusätzliche Metadaten für jede URL bereitstellt.

Zu den häufigsten Einsatzmöglichkeiten von Webcrawlern gehören:

  1. Suchmaschinen wie Googlebot, Bingbot und Yandex Bot sammeln HTML aus einem wesentlichen Teil des Webs und indizieren die Daten, um sie leicht durchsuchbar zu machen.
  2. SEO-Analysetools sammeln nicht nur HTML, sondern auch Metadaten wie Antwortzeit und Antwortstatus, um fehlerhafte Seiten zu identifizieren und Links zwischen Domains für die Backlink-Analyse zu verfolgen.
  3. Preisüberwachungstools durchsuchen E-Commerce-Websites, um Produktseiten zu finden und Metadaten, insbesondere Preise, zu extrahieren. Diese Produktseiten werden dann regelmäßig erneut besucht.
  4. Common Crawl unterhält eine Öffentliches Repository für Web-Crawling-Daten, wie Archiv Mai 2022 mit 3,45 Milliarden Webseiten.

So crawlen Sie JavaScript-Websites

Das Crawlen von JavaScript-Websites kann eine größere Herausforderung darstellen als das Crawlen statischer HTML-Seiten, da der Inhalt häufig durch JavaScript-Code geladen und manipuliert wird. Um solche Websites zu crawlen, müssen Sie einen Headless-Browser verwenden, der JavaScript ausführen und den Inhalt der Seite rendern kann. Eine beliebte Wahl für diese Aufgabe ist die Kombination der Puppeteer-Bibliothek und der Node.js-Laufzeitumgebung.

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

1. Installieren Sie Node.js

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

2. Erstellen Sie ein neues Projektverzeichnis

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

mkdir js-crawler
cd js-crawler

3. Initialisieren Sie ein neues Node.js-Projekt

Führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus, um ein neues zu erstellen package.json Datei mit den Standardeinstellungen.

npm init -y

4. Installieren Sie Puppeteer

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

npm install puppeteer

5. Erstellen Sie eine neue JavaScript-Datei

Erstellen Sie eine neue Datei mit dem Namen

crawler.js

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

6. Schreiben Sie den Crawler-Code

Offen

crawler.js

und fügen Sie den folgenden Code hinzu:

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

Starten Sie eine neue Browserinstanz

const browser = await puppeteer.launch({ headless: true });

Erstellen Sie eine neue Seite im Browser

const page = await browser.newPage();

Navigieren Sie zur Ziel-URL

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

Extrahieren Sie Daten von der Seite mit

evaluate()
const data = await page.evaluate(() => {

Schreiben Sie hier Ihren benutzerdefinierten JavaScript-Code, um die benötigten Daten zu extrahieren. Extrahieren wir beispielsweise alle Überschriften (h1-Elemente) aus der Seite.

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

Schließen Sie den Browser

await browser.close();

Geben Sie die extrahierten Daten zurück

return data;
}

Anwendungsbeispiel:

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

Ersetze das

https://example.com/

Geben Sie die URL der Zielwebsite ein und passen Sie sie an

page.evaluate()

Funktion zum Extrahieren der benötigten Daten.

7. Führen Sie den Crawler aus

Führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus, um den Crawler auszuführen:

node crawler.js

Das Skript startet einen Headless-Browser, navigiert zur Ziel-URL und führt den im angegebenen JavaScript-Code aus

page.evaluate()

Funktion. Die extrahierten Daten werden in der Konsole protokolliert.

Bedenken 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 bearbeiten, auf der Seite scrollen oder sich mit CAPTCHAs und Cookies befassen.

So crawlen Sie das Web mit Python

Das Crawlen einer Website mit Python umfasst das Abrufen von Webseiten, das Parsen ihres Inhalts und das Verfolgen von Links zu anderen Seiten. In diesem Handbuch verwenden wir zwei beliebte Python-Bibliotheken: Requests und Beautiful Soup. In diesem Handbuch wird davon ausgegangen, dass Sie Python installiert haben und über grundlegende Kenntnisse der Python-Programmierung verfügen.

Schritt 1: Installieren Sie die erforderlichen Bibliotheken

Installieren Sie die Bibliotheken „Requests“ und „Beautiful Soup“ mit pip:

pip install requests beautifulsoup4

Schritt 2: Importieren Sie die Bibliotheken

Importieren Sie die erforderlichen Bibliotheken in Ihr Python-Skript:

import requests
from bs4 import BeautifulSoup

Schritt 3: Erstellen Sie eine Funktion zum Abrufen des Webseiteninhalts

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

def fetch_page(url):
    response = requests.get(url)
    if response.status_code == 200:
        return response.text
    else:
        print(f"Failed to fetch {url} (status code {response.status_code})")
        return None

Schritt 4: Erstellen Sie eine Funktion zum Parsen des Webseiteninhalts

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

def parse_page(html):
    soup = BeautifulSoup(html, "html.parser")
return soup

Schritt 5: Erstellen Sie eine Funktion zum Extrahieren von Links aus dem analysierten Inhalt

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

def extract_links(soup, base_url):
   links = []
    for a_tag in soup.find_all("a"):
        href = a_tag.get("href")
        if href and not href.startswith("#"):
            if not href.startswith("http"):
                href = base_url + href
            links.append(href)
    return links

Schritt 6: Erstellen Sie eine Funktion zum Crawlen der Website

Erstellen Sie eine Funktion zum rekursiven Crawlen der Website:

def crawl_website(url, max_depth=2, depth=0):
    if depth > max_depth:
        return
    html = fetch_page(url)
    if not html:
        return
    soup = parse_page(html)
    links = extract_links(soup, url)
    print(f"{'  ' * depth}[{depth}] {url}")
    for link in links:
        crawl_website(link, max_depth, depth + 1)

Schritt 7: Führen Sie den Crawler aus

Führen Sie den Crawler aus, indem Sie den aufrufen

crawl_website

Funktion mit der gewünschten URL und maximaler Tiefe:

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

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

crawl_website

Funktion, um bestimmte Website-Strukturen zu verarbeiten, Logik zum Speichern der extrahierten Informationen hinzuzufügen oder erweiterte Crawling-Funktionen wie die Verarbeitung von robots.txt, Ratenbegrenzung oder Parallelisierung von Anforderungen zu implementieren.

12 Tipps zum Crawlen einer Website, ohne blockiert zu werden

Dies sind die wichtigsten Strategien für das Web-Crawling, ohne auf Blockaden zu stoßen:

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

Stellen Sie vor dem Crawlen oder Scrapen einer Website sicher, dass Ihr Ziel die Datenerfassung von seiner Seite zulässt. Überprüfen Sie die Robots-Ausschlussprotokolldatei (robots.txt) der Website und halten Sie sich an die Bestimmungen der Website.

Auch wenn die Website das Crawlen zulässt, seien Sie respektvoll und beschädigen Sie die Website nicht. Halten Sie die im Robots-Ausschlussprotokoll festgelegten Vorschriften ein, crawlen Sie außerhalb der Hauptverkehrszeiten, begrenzen Sie Anfragen, die von einer einzelnen IP-Adresse stammen, und richten Sie eine Verzögerung zwischen Anfragen ein.

Auch wenn die Website Web Scraping zulässt, kann es dennoch zu Blockaden kommen. Daher ist es wichtig, auch zusätzliche Schritte zu befolgen. Eine ausführlichere Anleitung finden Sie in unserem Web-Scraping-Python-Tutorial.

#2: Nutzen Sie einen Proxyserver

Ohne Proxys wäre Web-Crawling nahezu unmöglich. Wählen Sie einen seriösen Proxy-Dienstanbieter und wählen Sie je nach Aufgabe zwischen Rechenzentrums- und privaten IP-Proxys.

Durch die Verwendung eines Vermittlers zwischen Ihrem Gerät und der Zielwebsite werden IP-Adressblockierungen verringert, Anonymität gewährleistet und Sie können auf Websites zugreifen, die in Ihrer Region möglicherweise nicht verfügbar sind. Wenn Sie sich beispielsweise in Deutschland befinden, müssen Sie möglicherweise einen US-Proxy verwenden, um auf Webinhalte in den USA zuzugreifen.

Um optimale Ergebnisse zu erzielen, wählen Sie einen Proxy-Anbieter mit einem großen IP-Pool und einer Vielzahl von Standorten.

#3: IP-Adressen rotieren

Bei der Verwendung eines Proxy-Pools 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 Eindruck erwecken, als wären Sie mehrere verschiedene Internetnutzer, und die Wahrscheinlichkeit einer Blockierung verringert sich.

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

#4: Verwenden Sie echte Benutzeragenten

Die meisten Server, die Websites hosten, können die Header der HTTP-Anfrage untersuchen, die von Crawling-Bots generiert werden. Dieser HTTP-Anforderungsheader, User Agent genannt, enthält verschiedene Informationen, die vom Betriebssystem und der Software bis zum Anwendungstyp und seiner Version reichen.

Server können verdächtige Benutzeragenten leicht erkennen. Echte Benutzeragenten enthalten beliebte HTTP-Anfragekonfigurationen, die von organischen Besuchern übermittelt werden. Um eine Blockierung zu vermeiden, stellen Sie sicher, dass Sie Ihren Benutzeragenten so anpassen, dass er einem organischen ähnelt.

Da jede von einem Webbrowser gestellte Anfrage einen Benutzeragenten enthält, sollten Sie den Benutzeragenten häufig wechseln.

Es ist außerdem wichtig, aktuelle und gängige Benutzeragenten zu verwenden. Wenn Sie Anfragen mit einem fünf Jahre alten Benutzeragenten aus einer nicht unterstützten Firefox-Version stellen, werden viele Warnsignale ausgelöst. Im Internet finden Sie öffentliche Datenbanken, die Ihnen zeigen, welche Benutzeragenten derzeit am beliebtesten sind. Wir verfügen außerdem über eine eigene, regelmäßig aktualisierte Datenbank. Kontaktieren Sie uns daher, wenn Sie Zugriff darauf benötigen.

#5: Stellen Sie Ihren Fingerabdruck richtig ein

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

Beim Scraping des Webs hinterlässt TCP verschiedene Parameter. Diese Parameter werden vom Betriebssystem oder Gerät des Endbenutzers festgelegt. Wenn Sie sich fragen, wie Sie verhindern können, dass Sie beim Scraping auf die schwarze Liste gesetzt werden, stellen Sie sicher, dass Ihre Parameter konsistent sind. Alternativ können Sie Web Unblocker verwenden – eine KI-gestützte Proxy-Lösung mit dynamischer Fingerabdruckfunktion. Web Unblocker kombiniert viele Fingerabdruckvariablen auf eine Art und Weise, sodass die Fingerabdrücke selbst dann, wenn ein einzelner, am besten funktionierender Fingerabdruck identifiziert wird, immer noch scheinbar zufällig sind und Anti-Bot-Prüfungen bestehen können.

#6: Vorsicht vor Honeypot-Fallen

Seien Sie vorsichtig bei Honeypot-Traps, bei denen es sich um Links im HTML-Code handelt, die von Web-Scrapern erkannt werden können, für organische Benutzer jedoch unsichtbar sind. Diese Fallen werden verwendet, um Webcrawler zu identifizieren und zu blockieren, da nur Roboter diesen Links folgen würden. Obwohl das Einrichten von Honeypots viel Arbeit erfordert, können einige Ziele sie zum Erkennen von Webcrawlern verwenden. Seien Sie also vorsichtig, wenn Ihre Anfrage blockiert und ein Crawler erkannt wird.

#7: Nutzen Sie CAPTCHA-Lösungsdienste

CAPTCHAs stellen eine große Herausforderung für das Web-Crawling dar, da Besucher Rätsel lösen müssen, um zu bestätigen, dass sie ein Mensch sind. Diese Rätsel enthalten oft Bilder, die für Computer schwer zu entziffern sind. Um CAPTCHAs zu umgehen, verwenden Sie spezielle CAPTCHA-Lösungsdienste oder gebrauchsfertige Crawling-Tools, wie z. B. das Daten-Crawling-Tool von Oxylabs, das CAPTCHAs löst und gebrauchsfertige Ergebnisse liefert. Verdächtiges Verhalten kann dazu führen, dass das Ziel die Lösung des CAPTCHAs anfordert.

#8: Kriechmuster ändern

Um eine Blockierung zu vermeiden, ändern Sie das Navigationsmuster Ihres Crawlers, damit es weniger vorhersehbar erscheint. Sie können zufällige Klicks, Scrolls und Mausbewegungen hinzufügen, um das Surfverhalten eines normalen Benutzers nachzuahmen. Denken Sie bei Best Practices darüber nach, wie ein typischer Benutzer die Website durchsuchen würde, und wenden Sie diese Prinzipien auf das Tool an. Beispielsweise ist es ein logisches Muster, die Startseite zu besuchen, bevor Innenseiten angefordert werden.

#9: Scraper-Geschwindigkeit reduzieren

Um das Risiko einer Blockierung zu verringern, verlangsamen Sie die Scraper-Geschwindigkeit, indem Sie zufällige Pausen zwischen Anfragen einfügen oder Wartebefehle einleiten, bevor Sie eine Aktion ausführen. Wenn die URL ratenbegrenzt ist, respektieren Sie die Beschränkungen der Website und reduzieren Sie die Scraping-Geschwindigkeit, um Drosselungsanfragen zu vermeiden.

#10: Crawl außerhalb der Hauptverkehrszeiten

Crawler bewegen sich schneller als normale Benutzer und können die Serverlast erheblich beeinträchtigen. Das Crawlen während Zeiten hoher Auslastung kann sich aufgrund von Dienstverlangsamungen negativ auf das Benutzererlebnis auswirken. Um dies zu vermeiden, crawlen Sie außerhalb der Hauptverkehrszeiten, z. B. kurz nach Mitternacht (bezogen auf den Dienst), um die Belastung des Servers zu verringern.

#11: Vermeiden Sie Image Scraping

Das Scrapen von Bildern kann riskant sein, da es sich oft um datenintensive Objekte handelt, die möglicherweise urheberrechtlich geschützt sind. Darüber hinaus sind Bilder oft in JavaScript-Elementen versteckt, was die Komplexität des Scraping-Prozesses erhöhen und den Web-Scraper verlangsamen kann. Um Bilder aus JS-Elementen zu extrahieren, müsste ein komplizierteres Scraping-Verfahren eingesetzt werden.

#12: Verwenden Sie einen Headless-Browser

Ein Headless-Browser ist ein Tool, das wie ein normaler Browser funktioniert, jedoch ohne grafische Benutzeroberfläche. Es ermöglicht das Scrapen von Inhalten, die durch das Rendern von JavaScript-Elementen geladen werden. Die am weitesten verbreiteten Browser Chrome und Firefox verfügen über Headless-Modi, die zum Web-Scraping verwendet werden können, ohne Blockaden auszulösen.

Video-Tutorial zum Crawlen einer Website

In diesem Oxylabs-Tutorial erfahren Sie die Grundlagen des Web-Crawlings und seine Bedeutung für die Datenerfassung sowie die Erörterung ethischer und rechtlicher Aspekte. Es zeigt beliebte Tools wie Scrapy, Beautiful Soup und Selenium und hilft Ihnen bei der Auswahl des besten Tools für Ihre Anforderungen.

Das Tutorial hilft Ihnen, die Struktur einer Website zu verstehen, einen einfachen Webcrawler zu erstellen und die benötigten Informationen zu extrahieren. Es erinnert Sie auch daran, gute Web-Scraping-Manieren zu befolgen, z. B. die robots.txt-Regeln zu respektieren und Server nicht zu überlasten.

Das Video hilft Ihnen auch bei der Bewältigung von Herausforderungen wie dem Abrufen von Daten von dynamischen Seiten, dem Umgang mit mehreren Seiten und dem Vermeiden von Blockaden. Es zeigt, wie Sie Ihre Daten speichern und organisieren und gibt Tipps, wie Sie Ihr Web-Crawling-Projekt größer und effizienter gestalten können. Abschließend werden Sie daran erinnert, stets ethische und rechtliche Richtlinien zu befolgen.

Abschluss

Am Ende unserer aufregenden Erkundung der Welt des Web-Crawlings wird klar, dass die Beherrschung dieser Kunst dem Besitz einer Schatzkarte in der riesigen, sich ständig verändernden Landschaft des Internets gleichkommt. Wir haben uns mit den Feinheiten befasst, die Web-Crawling vom Web-Scraping unterscheiden, verschiedene Strategien aufgedeckt und uns in die dynamischen Bereiche von JavaScript-Websites und Python-gestütztem Web-Crawling gewagt.

Unser Schatz an Tipps und Ratschlägen stellt sicher, dass Ihre Web-Crawling-Bemühungen verantwortungsvoll und ethisch bleiben und die Fallstricke und Hindernisse vermeiden, die auf dem Weg dorthin auftreten können. Wenn Sie also mit dem Wissen und der Weisheit, die Sie in diesem umfassenden Artikel gewonnen haben, in den grenzenlosen digitalen Ozean eintauchen, denken Sie daran, dass die Fähigkeit, die Leistungsfähigkeit des Web-Crawlings zu nutzen, Sie von der Konkurrenz abheben und die verborgenen Schätze in den Tiefen des Internets erschließen wird die digitale Welt.

Alexander Schmidt

Alexander Schmidt ist ein Softwareentwickler, der daran glaubt, intelligenter und nicht härter zu arbeiten. Mit 12 Jahren Erfahrung im Bereich Automatisierung und Webdatenextraktion für Analysen und Forschung unterstützt er Unternehmen mit praktischen Tipps und wertvollen Erkenntnissen, die er auf unterhaltsame und leicht verständliche Weise vermittelt, um anderen zu helfen, den Wert und die Leistung ihrer Proxy-Lösungen zu maximieren. Wenn er nicht gerade sein Setup optimiert oder KMUs berät, kann man Alexander dabei finden, sich über die neuesten technischen Neuigkeiten und KI-Fortschritte zu informieren.

Proxy auswählen und kaufen

Wählen Sie Typ, Standort und Menge aus, um die Preise sofort anzuzeigen.

Proxy auswählen und kaufen