Sich auf die abenteuerliche Reise des Web-Crawling zu begeben, 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-Crawling zu einer entscheidenden Fähigkeit entwickelt, die es uns ermöglicht, effizient Informationen zu sammeln, Erkenntnisse zu gewinnen und das sich ständig ausdehnende World Wide Web sinnvoll zu nutzen.
In diesem aufschlussreichen Artikel werden wir das komplizierte Terrain des Web-Crawling durchqueren, die Unterschiede zwischen Web-Crawling und Web-Scraping aufdecken und eine Reihe von Strategien und Technologien erkunden, die Ihre Web-Crawling-Fähigkeiten verbessern werden.
Von der dynamischen Welt der JavaScript-Websites bis hin 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 vonstattengeht.
Inhaltsverzeichnis
- Web-Crawling vs. Web-Scraping
- 4 Web-Crawling-Strategien
- Wie man JavaScript-Websites crawlt
- Wie man eine Website Crawling mit Python macht
- 12 Tipps, wie man eine Website crawlen kann, ohne blockiert zu werden
- Video-Tutorial über das Crawling einer Website
- Fazit
Also, schnallen Sie sich an und machen Sie sich bereit für eine aufregende Reise in die fesselnde Welt des Web-Crawling!
Web-Crawling vs. Web-Scraping
Obwohl Web-Crawling und Web-Scraping oft für dasselbe gehalten werden und beide für Data-Mining verwendet werden, gibt es entscheidende Unterschiede. Wir werden diese Unterschiede untersuchen und Ihnen helfen zu entscheiden, welcher Ansatz am besten zu Ihren Bedürfnissen und Geschäftszielen passt.
Hauptunterschiede
Einfach ausgedrückt, ist Web-Crawling das, was Suchmaschinen tun: Sie durchforsten das Web 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 das, was Google tut – 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 bekannt als Webdatenextraktion) ist ein gezielterer Prozess. Durch die Anpassung von Befehlen und die Verwendung von Scraping-Proxys können Sie bestimmte Daten von Ihrer Ziel-Website extrahieren. Anschließend können Sie die Ergebnisse in einem geeigneten Format, z. B. JSON oder Excel, herunterladen.
In einigen Fällen können sowohl Web-Crawling als auch Web-Scraping eingesetzt werden, um ein einziges Ziel zu erreichen, wobei sie im Wesentlichen als Schritt eins und zwei in Ihrem Prozess fungieren. Durch die Kombination der beiden Verfahren können Sie mit einem Crawler große Mengen an Informationen 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 Web-Crawler nur einen Teil der Webseiten auf der Grundlage ihres Crawler-Budgets, 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, in der festgelegt ist, welche Teile der Website gecrawlt werden können und welche nicht zulässig sind. Außerdem gibt es die Datei sitemap.xml, die detaillierter ist als die robots.txt und den Bots vorgibt, welche Pfade gecrawlt werden sollen, und zusätzliche Metadaten für jede URL bereitstellt.
Übliche Verwendungszwecke für Web-Crawler sind:
- Suchmaschinen wie Googlebot, Bingbot und Yandex Bot sammeln HTML aus einem großen Teil des Webs und indizieren die Daten, um sie leicht durchsuchbar zu machen.
- SEO-Analyse-Tools sammeln nicht nur HTML, sondern auch Metadaten wie Antwortzeit und Antwortstatus, um fehlerhafte Seiten zu identifizieren und Links zwischen Domänen für die Backlink-Analyse zu verfolgen.
- Preisüberwachungs-Tools durchforsten E-Commerce-Websites, um Produktseiten zu finden und Metadaten, insbesondere Preise, zu extrahieren. Diese Produktseiten werden dann in regelmäßigen Abständen erneut besucht.
- Common Crawl unterhält ein öffentliches Repository von Web-Crawl-Daten, wie das Archiv vom Mai 2022 mit 3,45 Milliarden Webseiten.
Wie man JavaScript-Websites crawlt
Das Crawlen von JavaScript-Websites kann schwieriger sein als das Crawlen statischer HTML-Seiten, da der Inhalt oft 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 darstellen kann. Eine beliebte Wahl für diese Aufgabe ist die Kombination aus der Puppeteer-Bibliothek und der Node.js-Laufzeitumgebung.
Im Folgenden finden Sie eine schrittweise 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 (https://nodejs.org/) herunter und installieren Sie sie.
2. Erstellen Sie ein neues Projektverzeichnis
Legen Sie ein neues Verzeichnis für Ihr Projekt an und navigieren Sie über die Kommandozeile dorthin.
mkdir js-crawler
cd js-crawler
3. Initialisieren eines neuen Node.js-Projekts
Führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus, um eine neue package.json
-Datei mit den Standardeinstellungen zu erstellen.
npm init -y
4. Puppeteer installieren
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 für das Crawling der JavaScript-Website enthält.
6. Schreiben Sie den Crawler-Code
Öffnen Sie
crawler.js
und fügen Sie den folgenden Code hinzu:
const puppeteer = require('puppeteer');
async function crawlJavaScriptWebsite(url) {
Starten Sie eine neue Browser-Instanz
const browser = await puppeteer.launch({ headless: true });
Erstellen Sie eine neue Seite im Browser
const page = await browser.newPage();
Navigieren Sie zu der Ziel-URL
await page.goto(url, { waitUntil: 'networkidle2' })
Extrahieren von Daten aus der Seite mit
evaluate()
const data = await page.evaluate(() => {
Schreiben Sie hier Ihren eigenen JavaScript-Code, um die benötigten Daten zu extrahieren. Lassen Sie uns zum Beispiel alle Überschriften (h1-Elemente) aus der Seite extrahieren.
const headings = Array.from(document.querySelectorAll('h1')).map(heading => heading.textContent);
return {
headings,
};
});
Schließen Sie den Browser
await browser.close();
Rückgabe der extrahierten Daten
return data;
}
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 mit der URL der Ziel-Website und passen Sie die
page.evaluate()
Funktion, um die benötigten Daten zu extrahieren.
7. Starten Sie den Crawler
Führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus, um den Crawler zu starten:
node crawler.js
Das Skript startet einen Headless-Browser, navigiert zur Ziel-URL und führt den JavaScript-Code aus, der im Feld
page.evaluate()
Funktion. Die extrahierten Daten werden in der Konsole protokolliert.
Denken Sie daran, 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, die Seite scrollen oder mit CAPTCHAs und Cookies umgehen.
Wie man eine Website Crawling mit Python macht
Beim Crawling einer Website mit Python geht es darum, Webseiten abzurufen, ihren Inhalt zu analysieren und Links zu anderen Seiten zu verfolgen. In diesem Leitfaden werden wir zwei beliebte Python-Bibliotheken verwenden: Requests und Beautiful Soup. Diese Anleitung setzt voraus, dass Sie Python installiert haben und über ein grundlegendes Verständnis der Python-Programmierung verfügen.
Schritt 1: Installieren Sie die benötigten Bibliotheken
Installieren Sie die Bibliotheken Requests und Beautiful Soup mit pip:
pip install requests beautifulsoup4
Schritt 2: Importieren der Bibliotheken
Importieren Sie die erforderlichen Bibliotheken in Ihr Python-Skript:
import requests
from bs4
import BeautifulSoup
Schritt 3: Erstellen einer 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 einer Funktion zum Parsen des Webseiteninhalts
Erstellen Sie eine Funktion zum Parsen des Webseiteninhalts unter Verwendung 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 geparsten Inhalt
Erstellen Sie eine Funktion, um alle Links aus dem geparsten Inhalt der Webseite 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: Ausführen des Crawlers
Führen Sie den Crawler aus, indem Sie die
crawl_website
Funktion mit der gewünschten URL und der maximalen 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 man mit Python eine Website crawlen kann. Sie können die
crawl_website
Funktion anpassen, um bestimmte Website-Strukturen zu behandeln, Logik für die Speicherung der extrahierten Informationen hinzufügen oder erweiterte Crawling-Funktionen wie die Behandlung von robots.txt, Ratenbegrenzung oder Parallelisierung von Anfragen implementieren.
12 Tipps, wie man eine Website crawlt, 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
Bevor Sie eine Website crawlen oder scrapen, vergewissern Sie sich, dass Ihr Ziel die Datenerfassung von seiner Seite erlaubt. Überprüfen Sie die Robots-Exclusion-Protocol-Datei (robots.txt) der Website und halten Sie sich an die Vorschriften der Website.
Auch wenn die Website das Crawlen erlaubt, sollten Sie respektvoll sein und die Seite nicht beschädigen. Halten Sie sich an die im Robots-Ausschlussprotokoll festgelegten Regeln, crawlen Sie außerhalb der Hauptverkehrszeiten, beschränken Sie die von einer einzigen IP-Adresse ausgehenden Anfragen und legen Sie eine Verzögerung zwischen den Anfragen fest.
Aber auch wenn die Website Web Scraping zulässt, können Sie auf Sperren stoßen, so dass zusätzliche Schritte erforderlich sind. Eine umfassendere Anleitung finden Sie in unserem Python-Tutorial zum Web Scraping.
#Nr. 2: Verwenden Sie einen Proxy-Server
Web-Crawling wäre ohne Proxys fast unmöglich. Entscheiden Sie sich für einen seriösen Proxy-Anbieter und wählen Sie je nach Aufgabenstellung zwischen Proxys für Rechenzentren und privaten IP-Adressen.
Der Einsatz eines Vermittlers zwischen Ihrem Gerät und der Ziel-Website verringert die Blockierung von IP-Adressen, garantiert 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, müssen Sie möglicherweise einen US-Proxy verwenden, um auf Webinhalte in den Vereinigten Staaten zuzugreifen.
Optimale Ergebnisse erzielen Sie, wenn Sie einen Proxy-Anbieter mit einem großen IP-Pool und einer großen Auswahl an Standorten wählen.
#Nr. 3: IP-Adressen rotieren
Wenn Sie einen Proxy-Pool verwenden, ist es wichtig, dass Sie Ihre IP-Adressen wechseln.
Wenn Sie zu viele Anfragen von derselben IP-Adresse senden, wird die Ziel-Website Sie bald als Bedrohung erkennen und Ihre IP-Adresse blockieren. Die Proxy-Rotation ermöglicht es Ihnen, den Anschein zu erwecken, als seien Sie mehrere verschiedene Internetnutzer, und verringert die Wahrscheinlichkeit, blockiert zu werden.
Alle Oxylabs-Proxys für Privatanwender rotieren die IPs, aber wenn Sie Proxys für Rechenzentren verwenden, sollten Sie einen Proxy-Rotationsdienst nutzen. Wir rotieren auch IPv6- und IPv4-Proxys. Wenn Sie an den Unterschieden zwischen IPv4 und IPv6 interessiert sind, lesen Sie den Artikel meiner Kollegin Iveta.
#Nr. 4: Echte Benutzer-Agenten verwenden
Die meisten Server, die Websites hosten, können die Header der HTTP-Anfrage untersuchen, die Crawling-Bots erzeugen. Dieser HTTP-Anforderungsheader, der so genannte User-Agent, enthält verschiedene Informationen, vom Betriebssystem und der Software bis hin zum Anwendungstyp und seiner Version.
Server können verdächtige Benutzeragenten leicht erkennen. Echte User Agents enthalten beliebte HTTP-Anfragekonfigurationen, die von organischen Besuchern übermittelt werden. Um zu vermeiden, dass Sie blockiert werden, sollten Sie Ihren User-Agent so anpassen, dass er einem organischen User-Agent ähnelt.
Da jede von einem Webbrowser gestellte Anfrage einen Benutzeragenten enthält, sollten Sie den Benutzeragenten häufig wechseln.
Es ist auch wichtig, dass Sie die aktuellsten und beliebtesten Benutzeragenten verwenden. Wenn Sie Anfragen mit einem fünf Jahre alten Benutzer-Agenten von einer nicht unterstützten Firefox-Version stellen, ist das ein deutliches Zeichen. Im Internet finden Sie öffentliche Datenbanken, die Ihnen zeigen, welche User Agents derzeit am beliebtesten sind. Wir haben auch eine eigene, regelmäßig aktualisierte Datenbank, auf die Sie bei Bedarf zugreifen können.
#Nr. 5: Stellen Sie Ihren Fingerabdruck richtig ein
Die Anti-Scraping-Mechanismen werden immer ausgefeilter, und einige Websites verwenden das 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 vermeiden können, beim Scraping auf eine schwarze Liste gesetzt zu werden, sollten Sie sicherstellen, dass Ihre Parameter konsistent sind. Als Alternative können Sie Web Unblocker verwenden – eine KI-gestützte Proxy-Lösung mit dynamischer Fingerprinting-Funktion. Web Unblocker kombiniert viele Fingerabdruck-Variablen so, dass die Fingerabdrücke selbst dann, wenn sie einen einzigen, am besten funktionierenden Fingerabdruck identifizieren, scheinbar zufällig sind und Anti-Bot-Kontrollen passieren können.
#Nr. 6: Vorsicht vor Honeypot-Fallen
Seien Sie vorsichtig mit Honeypot-Fallen, d. h. Links im HTML-Code, die von Web-Scrapern erkannt werden können, aber für organische Benutzer unsichtbar sind. Diese Fallen werden verwendet, um Webcrawler zu identifizieren und zu blockieren, da nur Robots diesen Links folgen würden. Die Einrichtung von Honeypots ist zwar mit viel Arbeit verbunden, aber manche Ziele nutzen sie, um Webcrawler zu erkennen. Seien Sie also vorsichtig, wenn Ihre Anfrage blockiert und ein Crawler erkannt wird.
#Nr. 7: Nutzen Sie CAPTCHA-Lösungsdienste
CAPTCHAs stellen eine große Herausforderung für das Web-Crawling dar, da sie von Besuchern verlangen, Rätsel zu lösen, 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, verwenden Sie spezielle CAPTCHA-Lösungsdienste oder gebrauchsfertige Crawling-Tools, wie das Daten-Crawling-Tool von Oxylabs, das CAPTCHAs löst und gebrauchsfertige Ergebnisse liefert. Verdächtiges Verhalten kann die Zielperson dazu veranlassen, die Lösung von CAPTCHAs zu verlangen.
#Nr. 8: Ändern Sie das Crawling-Muster
Um zu vermeiden, dass Ihr Crawler blockiert wird, ändern Sie sein Navigationsmuster, um es weniger vorhersehbar zu machen. Sie können zufällige Klicks, Scrolls und Mausbewegungen hinzufügen, um das Surfverhalten eines normalen Nutzers nachzuahmen. Denken Sie darüber nach, wie ein typischer Benutzer die Website durchsuchen würde, und wenden Sie diese Prinzipien auf das Tool an. Ein logisches Muster ist beispielsweise der Besuch der Startseite, bevor die inneren Seiten aufgerufen werden.
#Nr. 9: Verringern Sie die Scraper-Geschwindigkeit
Um das Risiko, blockiert zu werden, zu verringern, sollten Sie die Scraper-Geschwindigkeit verlangsamen, indem Sie zufällige Pausen zwischen den Anfragen einbauen oder Wartebefehle einleiten, bevor Sie eine Aktion ausführen. Wenn die URL ratenbeschränkt ist, sollten Sie die Beschränkungen der Website respektieren und die Scraper-Geschwindigkeit reduzieren, um eine Drosselung der Anfragen zu vermeiden.
#Nr. 10: Crawlen außerhalb der Hauptgeschäftszeiten
Crawler bewegen sich schneller als normale Nutzer und können die Serverlast erheblich beeinträchtigen. Crawling während der Hochlastzeiten kann die Benutzererfahrung aufgrund von Serviceverlangsamungen negativ beeinflussen. Um dies zu vermeiden, sollten Sie außerhalb der Spitzenzeiten crawlen, z. B. kurz nach Mitternacht (je nach Standort des Dienstes), um die Belastung des Servers zu verringern.
#11: Vermeiden Sie Image Scraping
Das Scraping von Bildern kann riskant sein, da es sich oft um datenintensive Objekte handelt, die möglicherweise urheberrechtlich geschützt sind. Außerdem 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.
#Nr. 12: Verwenden Sie einen Headless Browser
Ein Headless Browser ist ein Tool, das wie ein normaler Browser funktioniert, jedoch ohne eine grafische Benutzeroberfläche. Er ermöglicht das Scraping 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 für Web-Scraping verwendet werden können, ohne Blöcke auszulösen.
Video-Tutorial über das Crawling einer Website
In diesem Oxylabs-Tutorial werden die Grundlagen des Web-Crawlings und seine Bedeutung für die Datenerfassung erläutert und ethische und rechtliche Aspekte diskutiert. Es zeigt beliebte Tools wie Scrapy, Beautiful Soup und Selenium und hilft Ihnen bei der Auswahl des besten Tools für Ihre Bedürfnisse.
Das Tutorial hilft Ihnen, die Struktur einer Website zu verstehen, einen einfachen Web-Crawler zu erstellen und die benötigten Informationen zu extrahieren. Es erinnert Sie auch daran, gute Web-Scraping-Manieren zu befolgen, z. B. 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 aus dynamischen Seiten, dem Umgang mit mehreren Seiten und dem Vermeiden von Blöcken. Es zeigt, wie Sie Ihre Daten speichern und organisieren können, und gibt Tipps, wie Sie Ihr Web-Crawling-Projekt größer und effizienter gestalten können. Schließlich erinnert es Sie daran, stets ethische und rechtliche Richtlinien zu befolgen.
Fazit
Am Ende unserer aufregenden Erkundung der Welt des Web-Crawling wird deutlich, dass die Beherrschung dieser Kunst mit dem Besitz einer Schatzkarte in der riesigen, sich ständig verändernden Landschaft des Internets vergleichbar ist. Wir haben uns mit den Feinheiten befasst, die Web-Crawling von Web-Scraping unterscheiden, verschiedene Strategien aufgedeckt und uns in die dynamischen Bereiche von JavaScript-Websites und Python-basiertem Web-Crawling vorgewagt.
Unser Schatz an Tipps und Ratschlägen stellt sicher, dass Ihre Web-Crawling-Bemühungen verantwortungsbewusst und ethisch vertretbar sind, und vermeidet die Fallstricke und Hindernisse, die auf dem Weg dorthin auftreten können. Wenn Sie also die Segel in den grenzenlosen digitalen Ozean setzen, bewaffnet mit dem Wissen und der Weisheit aus diesem umfassenden Artikel, denken Sie daran, dass die Fähigkeit, die Macht des Web-Crawling zu nutzen, Sie über die Konkurrenz erhebt und die verborgenen Juwelen in den Tiefen der digitalen Welt freilegt.