Web-Crawler: Was ist das?
Web-Scraping und Web-Crawling sind zwei unterschiedliche, aber miteinander verbundene Konzepte. Web-Crawling war schon immer ein wesentlicher Bestandteil des Web-Scrapings, da die URLs, die vom Web-Scraper-Code verarbeitet werden, nur dann funktionieren, wenn die Crawler-Logik sie findet.
Web-Crawler verfügen über eine Reihe von URLs, die besucht werden sollen, bekannt als „Seed“. Der Web-Crawler verfolgt und lokalisiert Links im HTML-Dokument für jede URL, filtert und sortiert alle Links anhand verschiedener Faktoren und fügt die neuen URL-Links in eine Warteschlange ein.
Er extrahiert bestimmte Daten aus dem Web oder alle HTML-Tags und Daten, die anschließend durch eine spezielle Pipeline verarbeitet werden.
Klassifizierung von Web-Crawlern
Basierend auf der verwendeten Struktur und Technologie lassen sich Webcrawler in folgende Typen einteilen: Deep-Web-Crawler, inkrementelle Webcrawler, fokussierte Webcrawler und allgemeine Webcrawler.
Webcrawler und ihr grundlegender Arbeitsablauf
Ein allgemeiner Webcrawler folgt dem folgenden grundlegenden Arbeitsablauf:
Erhalten der ersten URL. Das erste Element, die Ausgangs-URL, ist der Einstiegspunkt des Web-Crawlers, der Sie zu der Webseite weiterleitet, die gecrawlt werden soll.
Beim Crawlen der Webseite müssen Sie den HTML-Inhalt der Webseite extrahieren und anschließend die Parse-Methode oder HTML-Parser anwenden, um die URLs aller Seiten zu extrahieren, die mit dieser bestimmten Webseite verlinkt sind.
Stellen Sie alle diese URLs in eine Warteschlange. Durchlaufen Sie diese Warteschlange und lesen und analysieren Sie die URLs nacheinander.
Durchsuchen Sie anschließend die entsprechende Webseite für jede URL und wiederholen Sie die oben genannten Schritte.
Prüfen Sie abschließend, ob die Stoppbedingung erfüllt ist. Ist diese nicht festgelegt, crawlt der Webcrawler so lange weiter, bis er keine neue URL mehr erhält.
Web-Crawling: Welche Vorbereitungen müssen Sie in Ihrer Umgebung treffen?
- Stellen Sie sicher, dass Browser wie Chrome, Internet Explorer oder Safari in Ihrer Umgebung installiert sind.
- Laden Sie die Programmiersprache Python herunter und installieren Sie sie.
- Laden Sie anschließend eine geeignete IDE wie Visual Studio Code herunter.
- Beginnen Sie mit der Installation der erforderlichen Python-Dateien. Pip ist beispielsweise ein Python-Verwaltungstool, das Ihnen hilft, Python-Pakete zu finden, herunterzuladen, zu installieren und sogar zu deinstallieren.
Strategien für das Web-Crawling, die Sie kennen müssen
In der Regel durchsuchen Webcrawler nur eine Untergruppe von Webseiten, basierend auf dem Crawler-Budget. Dieses Budget kann die maximale Anzahl von Seiten pro Tiefe, Domain oder Ausführungszeit sein.
Bekannte Websites bieten eine robots.txt-Datei an, um die Bereiche der Website zu kennzeichnen und anzuzeigen, die von keinem User-Agent gecrawlt werden dürfen. Das XML-Dokument sitemap.xml ist das genaue Gegenteil der robots.txt-Datei, da es alle Seiten auflistet, die gecrawlt werden dürfen.
Zu den beliebtesten Anwendungsfällen von Webcrawlern gehören die folgenden:
Anwendungsfall 1:
Suchmaschinen wie Yandex Bot, Bingbot, Googlebot usw. extrahieren jedes HTML-Dokument für einen großen Webbereich. Die extrahierten Daten werden anschließend indexiert, um sie in durchsuchbare Daten umzuwandeln.
Anwendungsfall 2:
Neben der Erfassung von HTML-Code sammeln SEO-Analysesoftwareprogramme auch Metadaten wie das Antwortobjekt, die Antwortzeit und den Statuscode, um defekte Webseiten zu finden und die Links innerhalb der Domänenpalette zu identifizieren, um Backlinks zu extrahieren.
Anwendungsfall 3:
Eine E-Commerce-Website wird mithilfe von Preisüberwachungstools gecrawlt, um Produktwebseiten zu erkennen und Metadaten, vor allem den Preis, zu erfassen. Anschließend werden die Produktseiten der E-Commerce-Website regelmäßig erneut besucht.
Anwendungsfall 4:
Ein offenes Repository mit Webcrawler-Informationen oder -Daten wird von Common Crawl gepflegt und aufbewahrt. So sind beispielsweise im Oktober 2020 2,71 Milliarden Webseiten im Archiv gespeichert.
Entwicklung eines einfachen Webcrawlers in Python von Grund auf
Um einen einfachen Webcrawler in einer Python-Datei zu entwickeln, benötigen Sie mindestens eine Bibliothek zum Herunterladen der HTML-Tags von URLs und eine HTML-Parsing-Bibliothek zum Sammeln von Links.
Die Python-Community bietet Standardbibliotheken wie html.parser zum Parsen von HTML und urllib zur Ausführung von HTTP-Anfragen an. Auf GitHub finden Sie ein Beispiel für einen Python-Crawler, der ausschließlich mit diesen Standardbibliotheken entwickelt wurde.
Die Standard-Entwicklertools von Python für HTML-Parsing-Methoden und Anfragen sind nicht besonders entwicklerfreundlich.
Andere bekannte Bibliotheken wie die requests-Bibliothek und BeautifulSoup bieten eine verbesserte Entwicklererfahrung.
Um dies besser zu verstehen, gehen Sie die zuvor in diesem Abschnitt genannten Hinweise durch und folgen Sie einer definierten Reihe von HTML-Quellcodes.
Normalerweise ist der obige Code einfach. Es gibt jedoch einige Herausforderungen hinsichtlich Benutzerfreundlichkeit und Leistung, die gelöst werden müssen, bevor eine gesamte Website gecrawlt und Daten vollständig gescrapt werden können.
- Der Webcrawler ist in der Regel langsam und bietet keine Ausgewogenheit. Normalerweise benötigt ein Webcrawler etwa eine Sekunde, um eine bestimmte URL zu crawlen.
- Jedes Mal, wenn ein Webcrawler eine Anfrage sendet, steht er in der Warteschlange für die Bearbeitung der Anfrage, und dazwischen wird keine Aufgabe ausgeführt.
- Es gibt keine Option für einen erneuten Versuch bei der Download-URL-Logik. Die URL-Warteschlange ist keine echte Warteschlange und arbeitet ineffizient, wenn viele URLs beteiligt sind.
- Die Logik zur Link-Extraktion unterstützt keine URL-Filterung nach Domain oder das Filtern von Anfragen an statische Dateien, verarbeitet keine URLs, die mit einem Hashtag (#) beginnen, und bietet keine Unterstützung für die Standardisierung von URLs durch das Entfernen der URL-Abfrageparameter.
- Der Webcrawler ignoriert die robots.txt-Datei und macht sich selbst nicht erkennbar.
Schauen wir uns nun an, warum Sie Scrapy installieren sollten und wie es das benutzerdefinierte Web-Crawling einfacher denn je macht.
Web-Crawling mit Python
Scrapy ist eines der bekanntesten Python-Pakete für Web-Scraping und Crawling mit einer ausgezeichneten Gesamtbewertung auf GitHub.
Ein wesentlicher Vorteil von Scrapy ist, dass Anfragen organisiert und asynchron bearbeitet werden. Das bedeutet, dass Scrapy eine weitere Anfrage senden kann, bevor die vorherige abgeschlossen ist, oder dazwischen eine andere Operation ausführen kann.
Scrapy kann auch mehrere gleichzeitige Anfragen verarbeiten, lässt sich aber durch benutzerdefinierte Einstellungen auch so konfigurieren, dass die Websites geschont werden.
Scrapy verfügt über eine Architektur aus mehreren Web-Elementen. In der Regel werden mindestens zwei verschiedene Klassen ausgeführt: die Spider-Klasse und die Pipeline-Klasse.
Web-Scraping kann als ETL betrachtet werden; hier müssen Sie lediglich Daten aus dem gesamten HTML-Code und dem Web extrahieren. Natürlich müssen Sie die extrahierten Daten in Ihren eigenen Speicher laden.
Scrapy-Spider extrahieren Daten und Pipelines sorgen für deren nahtloses Laden in Ihren eigenen Speicher. Sie können die Transformation sowohl in Pipelines als auch in Spidern beobachten.
Es ist jedoch ratsam, eine angepasste Scrapy-Pipeline einzurichten, um jedes Element separat zu konvertieren. Durch diesen Ansatz hat die Unfähigkeit, ein Element zu verarbeiten, keine Auswirkungen auf die anderen Elemente.
Darüber hinaus können Sie auch Scrapy-Spider und Downloader-Middleware zwischen den Komponenten einbinden.
Überblick über die Scrapy-Architektur
Wenn Sie Scrapy bereits ausprobiert haben, wissen Sie, dass Web-Scraper als Klasse definiert sind, die aus der Basisklasse „Spider“ generiert wird und eine Parsing-Methode einsetzt, um alle Antworten zu verarbeiten.
Installieren Sie Scrapy, das zudem zahlreiche generische Spider-Klassen bietet, darunter SitemapSpider, CSVFeedSpider, XMLFeedSpider und CrawlSpider.
Die CrawlSpider-Klasse ist ebenfalls ein Ableger der Basis-Scrapy-Spider-Klasse und bietet ein zusätzliches „rules“-Attribut, um festzulegen, wie eine bestimmte Website gecrawlt werden soll.
Jede Regel nutzt einen LinkExtractor, um die Links zu identifizieren, die von jeder einzelnen Webseite extrahiert werden sollen.
Entwicklung eines Beispiel-Scrapy-Crawlers für IMDb
Bevor Sie versuchen, die IMDb-Website zu crawlen, sollten Sie durch Überprüfung der IMDb-robots.txt-Datei feststellen, welche URL-Routen zulässig sind.
Nur 26 Routen oder Pfade sind in der robots.txt-Datei für alle User-Agents gesperrt. Scrapy liest und überprüft die robots.txt-Datei vorab und hält sich daran, wenn die Einstellung ROBOTSTXT_OBEY auf „true“ gesetzt ist.
Dies gilt für jedes Projekt, das mit dem Scrapy-Befehl startproject erstellt wurde.
Web-Crawling in großem Maßstab
Standardmäßig können die Web-Spider von Scrapy bei einer Website wie IMDb etwa 600 Seiten pro Minute crawlen. Ein einzelner Roboter benötigt in der Regel mehr als 50 Tage, um etwa 45 Millionen Seiten zu crawlen.
Um verschiedene Websites zu crawlen, ist es ratsam, für jede Gruppe von Websites einzelne Web-Crawler einzusetzen.
Web-Crawling mit einem Python-Programm ist über die Scrapy-Konfiguration einfach
Sie können den Quellcode eines Python-Framework-Crawlers auf zwei Arten erstellen. Die erste besteht darin, Bibliotheken von Drittanbietern zum Herunterladen von Webseiten-URLs zu verwenden, und die zweite darin, HTML mit einem Web-Crawler zu parsen, der über ein gängiges Web-Crawler-Framework entwickelt wurde.
Scrapy ist ein hervorragendes Web-Crawling-Framework, das Sie ganz einfach durch Ihren eigenen Code erweitern können. Allerdings müssen Sie wissen, an welchen Stellen Sie Ihren eigenen Code einbinden können und wie die Einstellungen für jede Komponente aussehen.
Eine korrekte und nahtlose Scrapy-Konfiguration wird umso wichtiger, wenn Sie Websites mit Millionen von Webseiten crawlen. Wenn Sie mehr über das Web-Crawling erfahren möchten, ist es ratsam, eine renommierte Website auszuwählen und mit dem Crawling zu beginnen.
Nahtloses Web-Crawling und Web-Scraping mit WebScrapingAPI
Obwohl es zahlreiche Open-Source-Daten-Crawler gibt, sind diese möglicherweise nicht in der Lage, komplexe Webseiten und Websites in großem Umfang zu crawlen.
Sie müssen den zugrunde liegenden Code anpassen und modifizieren, um sicherzustellen, dass er für die von Ihnen beabsichtigte Seite funktioniert. Außerdem funktioniert er möglicherweise nicht mit jeder einzelnen Software in Ihrer Umgebung. Ein weiteres Problem, das auftreten kann, sind die Anforderungen an Rechenleistung und Geschwindigkeit.
Um solche Hürden zu überwinden, ermöglicht Ihnen WebScrapingAPI das Crawlen mehrerer Seiten unabhängig von der Programmiersprache, Ihren Geräten oder Plattformen und speichert die Inhalte in Datenbanksystemen oder einfachen, verständlichen und lesbaren Dateiformaten wie .csv.
Wenn es darum geht, Daten aus dem Web zu crawlen und Web-Scraper-Funktionen auszuführen, macht WebScrapingAPI die Dinge einfacher denn je.
Weitere Informationen zu unseren Web-Scraping- und Crawling-Funktionen erhalten Sie auf unserer Website oder durch Kontaktaufnahme mit uns. Für einen detaillierten Einblick in unsere Preise klicken Sie hier.




