So scrapen Sie Daten in 5 einfachen Schritten
Veröffentlicht: 2020-02-17Wie oft müssen Sie für Ihre Arbeit Daten von einer Website entfernen, und es scheint zu mühsam zu sein? In diesem Blogbeitrag erfahren Sie, wie Sie Daten in 5 einfachen Schritten kratzen.
Dieser Beitrag richtet sich an Softwareprofis, die Daten aus Webseiten oder PDFs extrahieren müssen und möchten, dass der Vorgang so schnell und schmerzlos wie möglich abläuft. Es gibt viele Möglichkeiten, Daten zu scrapen, aber dieser Artikel konzentriert sich auf einige der beliebtesten Methoden, die von professionellen Entwicklern verwendet werden: XPath, Regular Expressions, Beautiful Soup (BSA), Scrapy, Python Requests Library (PRL) und Selenium Webdriver. Diese Schabewerkzeuge können alle einfach installiert werden, wobei die Anweisungen für jedes einzelne bereitgestellt werden. Nachfolgend finden Sie eine Tabelle mit einer Zusammenfassung dieser Tools, in der ihre Vor- und Nachteile sowie ggf. Links zu weiteren Informationen über sie aufgeführt sind. Die Tabelle enthält einige andere nicht so beliebte Methoden, die ich ebenfalls ausprobiert habe und der Vollständigkeit halber enthalten sind.
Das Scraping von Daten auf einer Website kann in jeder Sprache erfolgen. In diesem Artikel werde ich demonstrieren, wie man Daten mit Python kratzt, weil es sehr einfach zu installieren und ziemlich einfach zu erlernen ist, besonders wenn Sie bereits eine andere Programmiersprache kennen, da die Syntax Java, C und PHP ähnelt. Python unterstützt mehrere Bibliotheken zum Scrapen von Daten, die in der Tabelle beschrieben sind. Scraping ist ein Tool, das jeder kennen sollte, da es wertvolle Einblicke in Ihren Zielmarkt, Wettbewerber und/oder Kunden bietet.
Web Scraping kann Ihnen helfen, verschiedene Arten von Daten zu extrahieren. Sie können Immobilienangebote , Hoteldaten oder sogar Produktdaten mit Preisen von E-Commerce-Websites crawlen, indem Sie ein paar Zeilen Code schreiben. Aber wenn Sie das Web crawlen und Daten extrahieren wollen, müssen Sie sich um ein paar Dinge kümmern. Es ist wichtig sicherzustellen, dass die gekratzten Daten in einem verwendbaren Format vorliegen. Ihr Code kann Daten von mehreren Websites extrahieren. Die extrahierten Daten sind sauber und liefern keine fehlerhaften Ergebnisse beim Ausführen von Algorithmen. Wenn Sie jedoch Ihren Code schreiben oder ein kleines Web-Scraping-Projekt erstellen möchten, um Daten von Websites zu crawlen, können Sie dies in fünf einfachen Schritten tun.

So scrapen Sie Daten auf 5 einfache Arten
1. Wählen Sie eine Programmiersprache oder ein Tool für das Data Scraping
„Ein Mann ist so gut wie sein Werkzeug“. Daher müssen Sie Ihre Tools für das Web Scraping so auswählen, dass sie Ihren Anforderungen entsprechen. Während einige gebrauchsfertige Software einfach zu bedienen erscheint, können Sie möglicherweise nicht viele Konfigurationsänderungen vornehmen. Gleichzeitig verfügen viele Tools möglicherweise nicht über ein Plugin zum Speichern der Daten, die Sie in einer Datenbank oder in der Cloud geschabt haben. Wenn es um Programmiersprachen geht , die heute zum Scrapen von Daten verwendet werden, gibt es Node.js, Python, Ruby und mehr. Aber unter diesen ist Python dank seiner einfacheren Lernkurve, einfachen Syntax, der Verfügbarkeit mehrerer externer Bibliotheken und der Open-Source-Sprache die beliebteste.
Es gibt mehrere Bibliotheken wie BeautifulSoup und Scrapy , die zum Crawlen von Webseiten, zum Erstellen von Web-Crawling-Spidern und zum Ausführen von Scraping-Jobs in bestimmten Zeitintervallen verwendet werden können. Python ermöglicht eine enorme Flexibilität bei der Integration anderer Systeme in Ihre Scraping-Engine. Sie können Ihre gekratzten Daten ganz einfach auf Ihrem lokalen Computer, in Datenbanken, auf S3 Storage speichern oder sie sogar in eine Word- oder Excel -Datei kopieren.
2. Scraping einer einzelnen Webseite und Analysieren der Komponenten
Bevor Sie Produktinformationen von beispielsweise tausend Produktseiten bei Amazon kratzen , müssen Sie auf die Seite zugreifen und die gesamte HTML-Seite abrufen, um sie zu analysieren und sich für eine Strategie zu entscheiden. Daten in HTML-Seiten können sich innerhalb bestimmter Schlüssel-Wert-Paare in Tags oder im Text innerhalb von Tags befinden. Sie können Bibliotheken wie BeautifulSoup verwenden, um auf jeder Webseite anzugeben, aus welchem genauen Tag Sie Daten extrahieren möchten, und den Code dann in einer Schleife ausführen. Auf diese Weise wird Ihr Code für jede einzelne Produktwebseite ausgeführt und extrahiert dieselben Informationen, beispielsweise Preisdetails.
3. Entscheiden Sie sich für eine Strategie zur Datenbereinigung und -speicherung
Noch bevor Sie mit dem Scraping der Daten beginnen, sollten Sie entscheiden, wo Sie die Daten speichern möchten. Denn wie Sie die Daten verarbeiten, hängt davon ab, wo Sie sie speichern. Es stehen mehrere Optionen zur Verfügung. Sie können zwischen NoSQL- und SQL-Datenbanken wählen, je nachdem, ob die Daten, die Sie kratzen, strukturiert oder unstrukturiert sind. Für unstrukturierte Daten können Sie SQL-Datenbanken wählen, da Sie die Daten in Zeilen speichern können, die aus einer Reihe von Attributen bestehen. Für unstrukturierte Daten, bei denen es keine festgelegten Attribute gibt, können Sie sich für NoSQL-Datenbanken entscheiden. In Bezug auf die Datenbank, in der die Daten gespeichert werden sollen, können Sie für SQL MySQL oder Postgres wählen. Amazon RDS bietet On-the-Cloud-Datenbanken, in denen Sie Ihre Daten speichern und nutzungsabhängig bezahlen können.
Für NoSQL können Sie eine der vollständig verwalteten und extrem schnellen Lösungen wie DynamoDb oder ElasticSearch auswählen. Verschiedene Datenbanken haben Vorteile, die einen schnellen Abruf bieten, einige bieten eine günstigere Speicherung pro TB . Die von Ihnen gewählte Datenbank hängt von Ihrem spezifischen Anwendungsfall und damit ab. Dazu sind einige Nachforschungen erforderlich, bevor Sie sich für eine entscheiden. Falls Sie große Scraped-Bilder und -Videos speichern müssen, können Sie AWS S3 oder Glacier verwenden . Letzteres wird verwendet, wenn Sie große Datenmengen in einem archivierten Format speichern möchten. Sie müssten nicht oft zugreifen, während erstere die häufiger verwendete Lösung ist. Dies fungiert als eine Art Online-Festplatte. Sie können Ordner erstellen und Dateien darin speichern.

4. Erstellen Sie eine Liste von Webseiten oder schreiben Sie eine Regex für das Data Scraping
Während Sie Ihren Code auf einer einzigen Webseite testen können, müssen Sie Dutzende oder Hunderte von Seiten crawlen wollen, weshalb Sie dieses Projekt durchführen. Wenn Sie einige Webseiten crawlen, können Sie die Links normalerweise in einem Array speichern und beim Scrapen der Seiten darüber schleifen. Eine bessere und häufiger verwendete Lösung ist die Verwendung eines Regex . Einfach ausgedrückt ist es eine programmatische Möglichkeit, Websites mit ähnlichen URL-Strukturen zu identifizieren.
Beispielsweise möchten Sie möglicherweise die Produktdaten aller Laptops bei Amazon crawlen. Jetzt sehen Sie vielleicht, dass alle URLs mit „ www.amazon.com/laptop/<laptopModelNo>/prodData “ beginnen. Sie können dieses Format mithilfe von Regex replizieren, sodass alle diese URLs extrahiert werden und Ihre Web-Scraping-Funktion nur auf diesen URLs ausgeführt wird . Und nicht alle URLs auf der Amazon-Website. Falls Sie zu viele Webseiten zum Crawlen haben, empfehlen wir Ihnen, einen parallelen Verarbeitungsansatz zu verwenden, um etwa zehn Webseiten gleichzeitig zu crawlen . Wenn Sie Webseiten scrapen und Links daraus extrahieren und dann die Webseiten schaben, zu denen diese Links führen, können Sie einen baumähnlichen Ansatz verwenden, um mehrere untergeordnete Seiten gleichzeitig zu crawlen, die aus einer Stammwebseite stammen.


5. Schreiben Sie den Code und testen Sie ihn
Alles, was wir bisher besprochen haben, war die Vorbereitung. Für den letzten Akt, den Code auszuführen und die Arbeit zu erledigen. Web-Scraping-Code funktioniert selten genau so, wie Sie es erwarten. Dies liegt daran, dass nicht alle Webseiten, die Sie zu crawlen versuchen, die gleiche Struktur haben würden. Zum Beispiel führen Sie Ihren Scraping-Code auf 100 Produktseiten aus und stellen fest, dass nur 80 davon verschrottet wurden. Der Grund dafür ist, dass 20 Seiten möglicherweise nicht vorrätig sind und ihre Webseitenstruktur anders ist. Solche Ausnahmen werden beim Schreiben des Codes nicht berücksichtigt. Aber nach ein paar Iterationen können Sie die erforderlichen Änderungen vornehmen. Und extrahieren Sie Daten von allen Webseiten, die Sie benötigen.

Alternative Data-Scraping-Methoden
Verwenden Sie die Excel-Filterfunktion, um Daten zu scrapen
Dies ist der einfachste Weg, um Daten von einer beliebigen Webseite zu kratzen. Es erfordert keine zusätzlichen Tools außer Excel und hinterlässt keine Spuren auf Ihrer Zielwebsite oder Ihrem System, dh es werden keine API-Aufrufe getätigt, keine Cookies gesetzt usw. Wenn Sie Zugriff auf einen PC/Mac haben, auf dem Excel installiert ist, dann ist dies bei weitem der Fall der einfachste Weg, Daten zu scrapen.
Wie es funktioniert
Öffnen Sie in Excel ein neues Blatt und schreiben Sie die URL Ihrer Zielwebsite in die erste Zelle (z. B. http://www.joes-hardware-store.com/). Geben Sie in der nächsten Zelle eine HTML- oder XPath-Datenfilterformel ein (siehe Tabelle unten für die in diesem Beispiel verwendete XPath-Datenfilterformel), die Daten von Ihrer Zielwebseite extrahiert. Wenn Sie mehrere Datenspalten kratzen möchten, wiederholen Sie Schritt 1 für jede Datenspalte und legen Sie sie nebeneinander.
So erhalten Sie XPath-Datenfilter in Excel
Klicken Sie in Excel auf Datei > Optionen > Erweitert und gehen Sie dann zum Abschnitt Anzeige. Aktivieren Sie das Kontrollkästchen neben „Entwicklerregisterkarte in der Multifunktionsleiste anzeigen“ und klicken Sie dann auf OK. Dies wird in Screenshot 1 unten gezeigt:
Klicken Sie in Excel auf Entwickler > Referenz, scrollen Sie dann nach unten und suchen Sie nach Microsoft XML Document 3.0 (wie in Abbildung 2 unten gezeigt):
Klicken Sie auf MSXML3 Apress und dann auf OK (wie in Screenshot 3 unten gezeigt):
Jetzt, da wir die MSXML3-Referenz installiert haben, können wir es versuchen. Geben Sie in Excel die URL Ihrer Zielwebseite in Zelle A1 und dann eine XPath-Datenfilterformel in Zelle B1 ein (z. B. um den Preis des Artikels „123“ auf einer Webseite zu erhalten, geben Sie die XPath-Datenfilterformel in Zelle B1 ein, wie in gezeigt Screenshot 4 und 5 unten):
Kopieren Sie nun den Inhalt der Zelle B1 in alle verbleibenden Zellen, indem Sie die Tastenkombination STRG+C von Excel verwenden. Dies wird in Screenshot 6 unten gezeigt:
Kopieren Sie die URL Ihrer Zielwebseite (in Zelle A1) in die Adressleiste von Excel. Drücken Sie die Eingabetaste, um es in den Browser zu laden und zu sehen, wie Ihre Daten wie von Zauberhand in Excel erscheinen
Wie Sie sehen können, ist dies eine äußerst effiziente Methode zum Scrapen von Daten. Es wird kein Fußabdruck auf der Zielwebsite oder Ihrem System hinterlassen, d. h. es werden keine API-Aufrufe getätigt, es werden keine Cookies gesetzt usw.
Verwenden Sie die Text-zu-Spalten-Funktion in Microsoft Word, um Daten nach Spalten zu trennen
Diese Methode ist etwas komplizierter als die erste, aber sie kann verwendet werden, um Daten von jeder Website mit klar definierten Spalten zu kratzen. Es erfordert MS Word und Excel sowie einige zusätzliche Tools, die unten beschrieben werden. Die gute Nachricht ist, dass diese Methode Spuren auf Ihrer Zielwebsite hinterlässt. Wenn Sie also Websites zu Marketingzwecken scrapen und eine Entdeckung vermeiden möchten, ist diese Methode nichts für Sie.
Wie es funktioniert
Erstellen Sie in MS Word ein neues Dokument, z. B. Joe's Hardware Store Product Listing Scraping Tool, kopieren Sie dann Ihre Ziel-Webseite und fügen Sie sie in das Textfeld ein (siehe Abbildung 1 unten). Wählen Sie die Goto-Funktion in MS Word, indem Sie STRG + G drücken, und geben Sie dann genau <<!DOCTYPE HTML [ENTER] ein. Dies wird in Screenshot 2 unten gezeigt:
Wählen Sie die Funktion „Ausführen“ in MS Word, indem Sie ALT + F5 drücken (wie in Screenshot 3 gezeigt), und Sie sollten etwas Ähnliches sehen (siehe Screenshot 4 unten):
Wählen Sie in Excel Filters > Text to Columns, wie in Screenshot 5 unten gezeigt:
Wählen Sie Getrennt und dann Ihr Trennzeichen aus dem Dropdown-Menü (in diesem Beispiel verwenden wir Komma, das standardmäßig ausgewählt ist).
Klicken Sie nun auf Weiter und definieren Sie die Position der „Kommas“, dh trennen Sie Ihre Webdaten in Spalten (z. B. verwende ich „,“ als Trennzeichen). Klicken Sie dann auf Weiter und definieren Sie, wie Excel mit leeren Zellen umgehen soll, dh sie ignorieren oder durch einen leeren Wert ersetzen (für dieses Beispiel stellen wir es auf „leere Werte ignorieren“). Klicken Sie dann auf Fertig stellen, um die Text-zu-Spalten-Funktion abzuschließen.
Wenn Ihre Ziel-Webseite keine klar definierten Spalten hat, möchten Sie sie vielleicht auf „Ersatzwerte“ setzen, wie in Screenshot 6 unten gezeigt:
Wie Sie in Screenshot 7 oben sehen können, wurden meine Daten erfolgreich in einzelne Textspalten getrennt, und ich kann sie jetzt einfach kopieren und an einer anderen Stelle auf meinem Computer einfügen.
Diese Methode ist besonders nützlich, um Daten aus PDF-Dateien zu extrahieren, die normalerweise klar definierte Spaltenüberschriften haben. Es wird Ihnen viel Zeit sparen, wenn Sie Daten aus mehreren PDF-Dateien mithilfe von Excel-Makros automatisch extrahieren möchten, da Sie jetzt dieselbe MS Word-Vorlage immer wieder verwenden können, um schnell mehrere Dokumente für jede PDF-Datei zu erstellen. 3. Verwenden Sie den VBA-Editor von MS Excel, um Daten zu scrapen
Für diese Methode verwenden wir ein Tool namens xvba, das von hier heruntergeladen werden kann und genau wie eine API (Application Program Interface) funktioniert. Die gute Nachricht ist, dass Sie überhaupt keinen Code schreiben müssen. Die schlechte Nachricht ist, dass Sie den HTML-Code Ihrer Ziel-Webseite eingeben müssen, dh ich würde vorschlagen, dies mit MS Word zu tun, da Sie dadurch gezwungen werden, Ihre Webseite wirklich in ihre Bestandteile zu zerlegen (siehe Abbildung 1 unten).
Die Zahlen in eckigen Klammern sind einzelne Zellen in einer Tabelle, in denen die Spalten- und Zeilenüberschriften als Namen für die einzelnen Datenfelder verwendet wurden. Sie verhalten sich wie Variablen, dh sie werden von Excel als Text behandelt und ändern sich je nachdem, wie Ihre Tabelle strukturiert wurde (z. B. wenn Sie eine andere Spalte zum Filtern von Daten auswählen).
Verwenden Sie IMPORTXML in Google-Tabellen
Wenn Sie IMPORTXML zum Scrapen von Daten von einer Webseite verwenden, besteht der erste Schritt darin, Google Sheets zu öffnen. Der zweite Schritt besteht darin, zu Extras > Skripteditor zu gehen. Der dritte Schritt besteht darin, den HTML-Code Ihrer Ziel-Website zu kopieren und in das Textfeld einzufügen, wie in Screenshot 7 unten gezeigt:
Wie Sie in Screenshot 8 oben sehen können, wurden meine Daten erfolgreich in einzelne Textspalten getrennt, und ich kann sie jetzt einfach kopieren und an einer anderen Stelle auf meinem Computer einfügen. Wir haben diese Methode in der Vergangenheit verwendet, um Facebook- und Twitter-Daten für eine Online-Marketingkampagne auszulesen. Es ist auch eine gute Möglichkeit, Daten von Websites zu entfernen, die AJAX verwenden, wenn Sie den GOTO-Befehl nicht verwenden möchten.
Verwenden Sie IMPORTHTML in Google Tabellen
Diese Methode ähnelt Methode Nummer 3, aber anstelle von IMPORTXML verwenden wir IMPORTHTML . Der erste Schritt besteht darin, Google Sheets zu öffnen. Der zweite Schritt ist, zu Extras > Skripteditor zu gehen. Der dritte Schritt besteht darin, den HTML-Code Ihrer Ziel-Website zu kopieren und in das Textfeld einzufügen.
Verwendung von Chrome-Erweiterungen
Sie können Webdaten mit Chrome-Erweiterungen wie Data Scraper und Save To CSV schaben. Da es eine kostenlose und eine kostenpflichtige Version der Chrome-Erweiterungen (Data Scraper) gibt, würde ich vorschlagen, beide zu haben, um zu sehen, welche für Sie besser funktioniert.
Fazit
Kratzen Sie bis zu ein paar hundert Seiten (während Sie sicherstellen, dass zwischen jedem Durchlauf ein paar Sekunden Pause sind). Das Scraping einer Website einmal im Monat würde mit einer in Python geschriebenen DIY-Lösung gut funktionieren. Aber falls Sie nach einer DaaS-Lösung der Enterprise-Klasse suchen, bietet unser Team bei PromptCloud eine End-to-End-Lösung, bei der Sie uns die Anforderungen mitteilen und wir Ihnen die Daten übergeben, die Sie dann anschließen und spielen können.
Infrastruktur, Proxy-Verwaltung, um sicherzustellen, dass Sie beim Daten-Scraping nicht blockiert werden. Regelmäßiges Ausführen der Scraping-Engine, um die Daten zu aktualisieren. Wir nehmen auch Änderungen vor, um Änderungen an der Benutzeroberfläche der betreffenden Website Rechnung zu tragen. Alles wird in unserer vollständig verwalteten Lösung gehandhabt. Dies ist ein Cloud-basierter Pay-per-Use-Dienst. Dies erfüllt alle Ihre Web-Scraping-Anforderungen. Egal, ob Sie ein Startup, einen MNC betreuen oder Daten für Ihre Forschungsarbeit benötigen. Wir haben Data-Scraping-Lösungen für alle.
