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.
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:
- 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.
- 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.
- Preisüberwachungstools durchsuchen E-Commerce-Websites, um Produktseiten zu finden und Metadaten, insbesondere Preise, zu extrahieren. Diese Produktseiten werden dann regelmäßig erneut besucht.
- 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.
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.