Python gibt es seit mehr als 20 Jahren und ist heute eine der beliebtesten Programmiersprachen überhaupt. Es ist eine universelle Sprache, die objektorientiert und interpretiert ist, was bedeutet, dass alle Fehler während der Laufzeit überprüft werden. Python ist außerdem Open Source und eine hochrangige Sprache, die für eine Vielzahl von Aufgaben verwendet werden kann, darunter Webentwicklung, künstliche Intelligenz, Big Data, Scripting und mehr.
Sie brauchen keine jahrelange Erfahrung, um mit der Verwendung von Python zu beginnen. Es ist relativ einfach zu verstehen, weshalb die meisten Softwareentwickler es als Ausgangspunkt empfehlen, wenn Sie das Programmieren lernen möchten. Python-Codes wurden mit Blick auf die Benutzererfahrung entwickelt und Programmierer finden oft, dass sie einfacher zu lesen sind und es ihnen ermöglichen, Befehle mit weniger Codezeilen auszuführen als bei anderen Sprachen.
In diesem Artikel werden die Grundlagen des Web Scraping mit Python erläutert und gezeigt, wie Entwickler wichtige Techniken und Tools zur effizienten Extraktion von Website-Daten nutzen können.
Javac
1 | Öffentlichkeit Klasse Musteranfrage { |
Python
1 | drucken("Hallo Welt!") |
Warum Python für Web Scraping verwenden?
Wenn Sie also planen, eine bestimmte Website zu crawlen und zu scrapen, aber nicht wissen, welche Programmiersprache Sie verwenden sollen, ist Scraping mit Python der beste Weg, um zu beginnen. Wenn Sie immer noch nicht überzeugt sind, sind hier einige der wichtigsten Funktionen, die Python für Bahnkratzen:
- Mehr Aufgaben mit weniger Codes: Wir können das nicht genug betonen. Das Schreiben eines Codes in Python ist so viel einfacher und wenn Sie große Datenmengen scrapen möchten, möchten Sie sicher nicht mehr Zeit mit dem Schreiben Ihres Codes verbringen. Mit Python können Sie mehr mit weniger erreichen.
- Gemeinschaftliche Unterstützung: Da Python beliebt ist und allgemein als zuverlässige Sprache zum Scraping gilt, können Sie bei technischen Problemen problemlos bei Tausenden von Community-Mitgliedern in Foren und auf den meisten Social-Media-Plattformen Hilfe suchen.
- Eine Vielzahl von Bibliotheken: Es verfügt über eine große Auswahl an Bibliotheken, insbesondere für Web Scraping, darunter Selenium, BeautifulSoup und natürlich Crawlbase.
- Dynamische Typisierung: Python ermöglicht Ihnen die Verwendung von Variablen ohne Angabe ihrer Datentypen. Dies spart Zeit und steigert die Effizienz Ihrer Aufgaben.
- Klare und verständliche Syntax: Die Syntax von Python ist aufgrund ihrer Ähnlichkeit mit englischen Anweisungen leicht verständlich. Der Code ist ausdrucksstark und lesbar, und die Einrückung hilft dabei, effektiv zwischen verschiedenen Codeblöcken oder Bereichen zu unterscheiden.
Allerdings kann Web Scraping in Python manchmal schwierig sein, da einige Websites Ihre Anfragen blockieren oder sogar Ihre IP sperren können. Das Schreiben eines einfachen Web Scrapers in Python reicht möglicherweise nicht aus, ohne Proxys zu verwenden. Um also eine Website mit Python einfach zu scrapen, benötigen Sie Crawlbases Crawling API wodurch Sie blockierte Anfragen und CAPTCHAs vermeiden können.
Scraping von Websites mit Python unter Verwendung von Crawlbase
Nachdem wir Ihnen nun einige Gründe genannt haben, warum Sie mit Crawlbase einen Web Scraper in Python erstellen sollten, fahren wir mit einer Anleitung zum Scrapen einer Website mit Python und zum Erstellen Ihres Scraping-Tools fort.
Hier zunächst die Voraussetzungen für unser einfaches Scraping-Tool:
- Crawlbase-Konto
- PyCharm oder einen beliebigen Code-Editor Ihrer Wahl
- Python 3.x.
- Crawlbase Python-Bibliothek
Notieren Sie sich unbedingt Ihr Crawlbase-Token, das als Authentifizierungsschlüssel für die Nutzung des Crawling API Bedienung.
Beginnen wir mit der Installation der Bibliothek, die wir für dieses Projekt verwenden werden. Sie können den folgenden Befehl auf Ihrer Konsole ausführen:
1 | pip installieren crawlbase |
Sobald alles eingerichtet ist, ist es nun an der Zeit, Code zu schreiben. Importieren Sie zunächst die Crawlbase-API:
1 | für Crawlbase importieren CrawlingAPI |
Initialisieren Sie dann die API und geben Sie Ihr Authentifizierungstoken ein:
1 | api = CrawlingAPI({'Zeichen': 'BENUTZERTOKEN'}) |
Danach holen Sie sich Ihre Ziel-URL oder eine beliebige Website, die Sie scrapen möchten. Für diese Anleitung verwenden wir Amazon als Beispiel.
1 | ZielURL = „https://www.amazon.com/AMD-Ryzen-3800XT-16-Threads-Processor/dp/B089WCXZJC“ |
Der nächste Teil unseres Codes ermöglicht uns, den vollständigen HTML-Quellcode der URL herunterzuladen und zeigt bei Erfolg das Ergebnis auf Ihrer Konsole oder Ihrem Terminal an:
1 | Antwort = api.get(Ziel-URL) |
Wie Sie sehen, wird jede Anfrage an Crawlbase mit einer Antwort geliefert. Unser Code zeigt Ihnen das gecrawlte HTML nur an, wenn der Status 200 oder Erfolg lautet. Jede andere Antwort, beispielsweise 503 oder 404, bedeutet, dass der Webcrawler fehlgeschlagen ist. Die API verwendet jedoch Tausende von Proxys weltweit, die die bestmöglichen Datenergebnisse liefern sollten.
Jetzt haben wir erfolgreich einen Crawler erstellt. Aber was wir wollen, ist ein Scraper-Tool, richtig? Also verwenden wir die bequemste Methode zum Scrapen einer Website, die analysierte Daten im JSON-Format zurückgibt.
Ein großartiges Merkmal des Crawling API ist, dass wir die eingebauten Daten-Scraper für unterstützte Websites, und glücklicherweise ist Amazon eine davon.
Um den Daten-Scraper zu verwenden, übergeben Sie ihn einfach als Parameter an unsere GET-Anfrage. Unser vollständiger Code sollte nun folgendermaßen aussehen:
1 | für Crawlbase importieren CrawlingAPI |
Wenn alles gut geht, erhalten Sie eine Antwort wie im folgenden Beispiel:
Erstellen von Python-Web-Scrapern mit BeautifulSoup und Crawlbase
Was nun, wenn Sie spezifischere Daten erhalten möchten, beispielsweise nur den Produktnamen und den Preis? Wie bereits erwähnt, verfügt Python über eine große Sammlung von Bibliotheken, darunter auch solche, die speziell zum Scraping gedacht sind. BeautifulSoup ist eine davon und ein beliebtes Python-Paket zum Parsen von HTML- und XML-Daten. Es ist außerdem einfacher zu verwenden, was Anfängern zugutekommt.
Versuchen wir also, einen einfachen Web Scraper in Python zu erstellen, indem wir Crawling API und BeautifulSoup dieses Mal. Da wir Python Version 3.xx verwenden, installieren wir die neueste BeautifulSoup-Paket das einfach BS4 heißt:
1 | pip install beautifulsoup4 |
Da wir die Crawlbase-Bibliothek bereits zuvor installiert haben, können Sie einfach eine neue Python-Datei erstellen und BS4 oder Crawlbase importieren.
1 | für bs4 importieren BeautifulSuppe |
Dann wiederholen Sie das Gleiche wie zuvor: Initialisieren Sie die API und verwenden Sie die GET-Anfrage, um Ihre Ziel-URL zu crawlen:
1 | api = CrawlingAPI({ 'Zeichen': 'BENUTZERTOKEN' }) |
In diesem Beispiel versuchen wir, den Produktnamen und den Preis von einer Amazon-Produktseite abzurufen. Am einfachsten geht das, indem man die Find-Methode verwendet und ein Argument übergibt, um die spezifischen Texte abzurufen, die wir benötigen. Weitere Informationen dazu, wie Sie ein bestimmtes HTML-Element auswählen können, finden Sie unter BeautifulSoup-Dokumentation.
1 | Produkt*Name = b_soup.find('Spanne', Klasse*=„Produkttitel-Worttrennung in Größe A“).Text |
Danach müssen wir einfach einen Befehl schreiben, um die Ausgabe auszudrucken.
1 | drucken('Name:', Produktname) |
Der vollständige Code sollte nun folgendermaßen aussehen:
1 | für bs4 importieren BeautifulSuppe |
Beispielausgabe:
Beispielausgabe.jpg
Beste Python Web Scraping-Bibliotheken
Für das Web Scraping mit Python gibt es spezielle Bibliotheken für verschiedene Aufgaben:
- Selen: Es dient als Webtesttool und automatisiert Browseraufgaben effizient. Sie können Selenium mit dem folgenden Pip-Befehl installieren:
1 | pip installieren Selen |
- SchöneSuppe: Diese Python-Bibliothek analysiert HTML- und XML-Dokumente und generiert Analysebäume zur vereinfachten Datenextraktion. Sie können Beautiful Soup mit dem folgenden Pip-Befehl installieren:
1 | pip install beautifulsoup4 |
- Pandas: Es wird zur Datenmanipulation und -analyse verwendet. Pandas erleichtert die Datenextraktion und -speicherung in bevorzugten Formaten.
Sie können Pandas mit dem folgenden Pip-Befehl installieren:
1 | Pandas installieren |
Ist Web Scraping legal oder nicht?
Wenn Sie die Rechtmäßigkeit von Web Scraping mit Python prüfen, müssen Sie beachten, dass die Berechtigungen für das Scraping von Website zu Website unterschiedlich sind. Um die Haltung einer Website zum Web Scraping zu ermitteln, können Sie deren Datei „robots.txt“ zu Rate ziehen. Greifen Sie auf diese Datei zu, indem Sie „/robots.txt“ zur URL hinzufügen, die Sie scrapen möchten.
Während das Scraping selbst möglicherweise rechtmäßig ist, können die extrahierten Daten rechtlichen Einschränkungen unterliegen. Stellen Sie sicher, dass Sie Folgendes nicht verletzen:
- Urheberrechtlich geschütztes Material: Es handelt sich um durch das Recht am geistigen Eigentum geschützte Daten. Die unbefugte Verwendung solcher Inhalte ist illegal.
- Persönliche Angaben: Daten, die Einzelpersonen identifizieren können, unterliegen Datenschutzbestimmungen wie der DSGVO für EU-Bürger. Ohne rechtliche Grundlage zur Speicherung dieser Daten ist es am besten, deren Erfassung zu vermeiden.
Lesen Sie im Allgemeinen immer die Geschäftsbedingungen einer Website, bevor Sie Scraping durchführen, um sicherzustellen, dass deren Richtlinien eingehalten werden. Wenn Sie sich nicht sicher sind, sollten Sie sich an den Websitebesitzer wenden und seine ausdrückliche Zustimmung einholen, bevor Sie fortfahren. Wenn Sie sich dieser rechtlichen Aspekte bewusst sind, können Sie beim Web Scraping mit Python verantwortungsbewusst und innerhalb der rechtlichen Grenzen vorgehen.
Herausforderungen beim Web Scraping
Beim Web Scraping mit Python müssen Sie mit einigen Herausforderungen rechnen. Das Internet ist voller unterschiedlicher Technologien, Stile und ständiger Entwicklungen, was das Scraping zu einem ziemlichen Chaos macht.
- Website-Vielfalt: Jede Website ist einzigartig und erfordert individuelle Ansätze für eine effektive Datenextraktion trotz wiederkehrender Muster.
- Dynamische Natur: Websites unterliegen ständigen Änderungen. Ihr Python-Web-Scraper funktioniert möglicherweise zunächst einwandfrei, aber mit der Weiterentwicklung von Websites können Fehler auftreten oder es kann schwierig sein, sich in neuen Strukturen zurechtzufinden.
- Anpassungsfähigkeit: Trotz aller Änderungen erfolgen die meisten Website-Änderungen schrittweise. Um diese Änderungen zu berücksichtigen, reicht es oft aus, Ihren Scraper mit geringfügigen Anpassungen zu aktualisieren.
- Laufende Wartung: Aufgrund der sich ständig weiterentwickelnden Internetstruktur müssen Sie damit rechnen, dass Ihre Scraper regelmäßig aktualisiert und angepasst werden müssen, damit sie funktionsfähig und genau bleiben.
Bonus-Tipps zum Python Web Scraping
Beachten Sie beim Scraping von Daten mit einem Python-Web-Scraper diese hilfreichen Tipps und Tricks:
- Planen Sie Ihre Anfragen: Wenn Sie in kurzer Zeit zu viele Anfragen senden, können CAPTCHA-Codes ausgelöst werden oder Ihre IP-Adresse kann sogar blockiert werden. Um dies zu vermeiden, führen Sie Timeouts zwischen den Anfragen ein, um einen natürlicheren Verkehrsfluss zu schaffen. Obwohl es für dieses Problem keine Python-Problemumgehung gibt, können Sie durch die Verteilung der Anfragen potenzielle Blockaden oder CAPTCHAs vermeiden.
- Fehlerbehandlung: Wenn Sie eine Website mit Python scrapen, sollten Sie wissen, dass Websites dynamisch sind und ihre Struktur sich unerwartet ändern kann. Implementieren Sie eine Fehlerbehandlung, beispielsweise mithilfe der Try-Except-Syntax, insbesondere wenn Sie häufig denselben Web Scraper verwenden. Dieser Ansatz erweist sich als nützlich, wenn Sie auf Elemente warten, Daten extrahieren oder Anfragen stellen, und hilft dabei, Änderungen in der Website-Struktur effektiv zu verwalten.
Fünf interessante Fakten zum Python Web Scraping
Das Abrufen von Daten von Websites mit Python ist eine praktische Fähigkeit, aber es geht um mehr als nur praktische Anwendungen. Hier sind fünf interessante Details zum Python-Web-Scraping, die Sie überraschen könnten, egal ob Sie gerade erst anfangen oder schon seit Jahren programmieren:
- Web Scraping gab es schon, bevor das Internet populär wurde
Web Scraping hat seinen Ursprung in den frühen Tagen des Internets, noch bevor Websites alltäglich wurden. Die ersten „Scraper“ waren frühe Webcrawler wie World Wide Web Wanderer (erstellt 1993). Diese Crawler zielten darauf ab, die wachsende Zahl von Websites zu indizieren. In der heutigen Welt ermöglichen Ihnen die BeautifulSoup- und Scrapy-Bibliotheken von Python, moderne Web Scraper mit minimalem Code zu erstellen. Diese Technik hat jedoch tiefe historische Wurzeln.
Pythons BeautifulSoup hätte beinahe den Namen „CuteHTML“ erhalten
Die Python-Bibliothek BeautifulSoup, ein Standardtool für Web Scraping, hat eine faszinierende Entstehungsgeschichte hinter ihrem Namen. Leonard Richardson, der Entwickler, wählte „Beautiful Soup“ als Anspielung auf ein Gedicht aus „Alice im Wunderland“ von Lewis Carroll. Bevor er sich für BeautifulSoup entschied, dachte er über Namen wie „CuteHTML“ nach. Die endgültige Wahl spiegelt die Fähigkeit der Bibliothek wider, überladenes HTML „aufzuräumen“, ähnlich wie man aus verhedderten Nudeln eine köstliche Suppe macht.Es wird in der wettbewerbsorientierten Datenwissenschaft verwendet
Beim Web Scraping geht es zwar nur darum, Produktpreise zu ermitteln oder Inhalte herauszuziehen, es ist jedoch eine entscheidende Fähigkeit in der wettbewerbsorientierten Datenwissenschaft. Viele Teilnehmer an Datenwissenschaftswettbewerben (wie Kaggle) verwenden Web Scraping, um zusätzliche Daten zu sammeln und damit ihre Modelle zu verbessern. Ob sie nun Nachrichten, Social-Media-Updates oder offene Datensätze sammeln, Web Scraping kann den Teilnehmern einen Vorsprung beim Erstellen robusterer Modelle verschaffen.Web Scraping hat Auswirkungen auf das KI-Training
Beim Web Scraping geht es nicht nur darum, statische Daten zu sammeln; es hat auch Auswirkungen auf das Training von KI-Modellen. Die riesigen Datensätze, die zum Trainieren von Modellen für maschinelles Lernen und natürliche Sprachverarbeitung benötigt werden, stammen oft aus dem Scraping öffentlich zugänglicher Inhalte, wie etwa von Social-Media-Plattformen, Blogs oder Nachrichtenseiten. Große Sprachmodelle (wie GPT) lernen beispielsweise aus riesigen Mengen gescrapter Webinhalte, wodurch sie Texte produzieren können, die menschlich klingen.Viele Websites verfügen über „Scraping Shields“ – und Python kann sie umgehen
Web Scraping kann knifflig sein – viele Websites haben integrierte „Schutzmechanismen“, die verhindern sollen, dass Bots ihre Daten sammeln. Diese Schutzmechanismen umfassen CAPTCHAs (Anti-Bot-Systeme) und Inhalte, die von JavaScript gerendert werden. Python hingegen verfügt über Bibliotheken wie Selenium, mit denen Scraper mit Websites interagieren können, als wären sie echte Benutzer. Dies hilft ihnen, diese Hindernisse zu umgehen, indem sie einen Webbrowser steuern und CAPTCHAs durch Aktionen lösen, die menschliches Verhalten nachahmen.
Schlussfolgerung
So einfach ist das. Mit nur 12 Zeilen Code ist unser Python-Web-Scraper-Tool fertig und einsatzbereit. Natürlich können Sie das hier Gelernte beliebig nutzen und es wird Ihnen alle Arten von bereits analysierten Daten liefern. Mithilfe des Crawling APImüssen Sie sich keine Gedanken über Website-Sperren oder CAPTCHAs machen und können sich auf das konzentrieren, was für Ihr Projekt oder Unternehmen wichtig ist.
Denken Sie daran, dass dies nur ein sehr einfaches Scraping-Tool ist. Das Python-Web-Scraper-Tool kann auf verschiedene Arten und in einem viel größeren Maßstab verwendet werden. Probieren Sie ruhig verschiedene Anwendungen und Module aus. Vielleicht möchten Sie Google-Bilder suchen und herunterladen, täglich die Produktpreise auf Shopping-Sites auf Änderungen überwachen oder Ihren Kunden sogar Dienste anbieten, die eine Datenextraktion erfordern.
Die Möglichkeiten sind endlos und die Verwendung der Crawlbase-Crawling- und Scraping-API stellt sicher, dass Ihr Python-Web-Scraper-Tool jederzeit effektiv und zuverlässig bleibt.