Wie lade ich das Internet herunter?
Im Datenzeitalter sind Computer und Speichermedien essenziell für die Sammlung und Speicherung grosser Datenmengen. Das Internet wiederum ermöglicht die Verbreitung dieser Daten, während moderne Webbrowser uns die Interaktion damit erleichtern. Gleichgültig, ob wir eine neue Smartwatch kaufen, einen Job suchen, ein Hotel buchen oder einfach nur Nachrichten konsumieren möchten, oft stehen wir vor der Herausforderung, alle relevanten Daten an einem Ort zu benötigen.
Warum lade ich Daten herunter?
Diese Fragestellungen erfordern in der Regel einen umfassenden Datensatz von Internetangeboten und können oft nicht durch simples Durchsuchen oder Betrachten einzelner Angebote beantwortet werden:
- Ist der angegebene Preis fair und wie setzt er sich zusammen?
- Wie repräsentativ ist dieses Angebot im Vergleich zu anderen?
- Gibt es versteckte Verbindungen oder Muster, die neue Erkenntnisse liefern könnten?
- Bonus: Wie verändert sich das Angebot über die Zeit wenn ich mehrfach Scraping durchführe?
Die Notwendigkeit, Daten herunterzuladen, entsteht also aus dem Bedürfnis, eine umfassende und fundierte Analyse durchzuführen, um fundierte Entscheidungen treffen zu können.
Grundlagen des Web-Scrapings
Das Herunterladen von Webdaten ist eine super repetitive Aufgabe, die idealerweise durch automatisierte Tools bewältigt wird. Die meisten Programmiersprachen (JavaScript, Python, Bash, R, Julia etc.) bieten Unterstützung für diesen Prozess. Neben den technischen Herausforderungen gibt es auch fachliche Aspekte, die ich hier erläutern werde.
Technische Herausforderungen:
In Python gibt es beispielsweise zwei Hauptansätze die ihre jeweiligen technischen Herausforderungen haben. Das Speichern der heruntergeladenen Daten ist übrigens oftmals kein so grosses Problem ist. Persönlich bevorzuge ich das Speichern der heruntergeladenen Daten im .csv-Format. Ein Beispiel dafür ist der Immobilien-Datensatz vom Immoscout Blog, der lediglich 35 Megabyte gross ist.
1. Requests und "Beautiful Soup"
Die wohl einfachste Methode ist das Absetzen eines einfachen HTTP-Requests, was in Python mithilfe der Requests-Bibliothek schnell und unkompliziert möglich ist ( requests.get(url) ). "Beautiful Soup" ist eine weitere Bibliothek, die dabei hilft, die heruntergeladenen Daten zu parsen (relevante Information zu extrahieren).
Der Nachteil dieses Ansatzes liegt darin, dass während des Downloads keine browserinteraktiven Informationen verfügbar sind. Zusätzlich kann das Setzen von Cookies oder Session-Storage schwierig sein.
2. Browser Automatisierung mittels Selenium.
Selenium ist ein Framework zur Automatisierung von Browseranwendungen, das ursprünglich für die Testautomatisierung von Webanwendungen entwickelt wurde und auch über Python gesteuert werden kann. Ich persönlich bevorzuge mittlerweile ausschliesslich diesen Ansatz, da viele Webseitenanbieter technische Herausforderungen bereitstellen.
3. Herausforderungen durch den Webseitenanbieter
Obwohl das Scraping für nichtkommerzielle Zwecke in der Regel legal ist, ergreifen viele Webseitenanbieter Massnahmen dagegen. Scraping kann für den Host teilweise wie ein DDOS-Angriff aussehen, was zu Sperrungen durch den Anbieter führen kann. Zudem möchten viele Anbieter nicht, dass ihre Daten ausserhalb ihrer Kontrolle liegen oder dass Konkurrenten Rückschlüsse auf ihr Geschäft ziehen können.
Die Prüfung durch Webseitenprovider beinhaltet oft:
- Überprüfung des Vorhandenseins von Headers, Cookies oder Session Storage Elementen.
- Analyse der Häufigkeit oder Regelmässigkeit, mit der dieselbe IP-Adresse auf die Seite zugreift.
- Ermittlung des Herkunftslandes des Zugriffs.
Mein persönlicher Ansatz besteht darin, Selenium zu verwenden und regelmässig ein VPN zu nutzen, um eine neue IP-Adresse zu erhalten. Dabei achte ich darauf, dass ich aus dem gleichen Land wie die Webseite zugreife. Zusätzlich stelle ich sicher, dass ich nicht mehr als drei Zugriffe pro Minute habe, um nicht auffällig zu werden oder zu viel technische Belastung zu erzeugen (Scraping dauert deshalb sehr lange!). Dieser Ansatz ähnelt einem manuellen Zugriff und hilft dabei, den Zugriff auf die Webseite unauffällig zu gestalten und möglichen Blockaden vorzubeugen.
Fachliche Herausforderungen
Bei beiden Varianten gibt es aber eine grosse challenge: Man muss die URL kennen, welche man herunterladen möchte.
Web Crawling vs. Web Scraping
Hier kommt der Begriff "Web Crawling" ins Spiel: Während Web Scraping das Herunterladen (oder Herunterkratzen) von Daten beschreibt, ist Web Crawling das auffinden von URLs. Das ist oftmals eine recht schwierige Aufgabe. Hier habe ich den Crawling prozess für immosocut kurz beschrieben.
Danach muss man wissen, wo genau sich die Daten in den heruntergladenen Webseiten befindet. Oftmals interessiert einem bei Weitem nicht die gesamte seite. Sondern vielleicht nur die Preise, Beschreibung der Leistung, Ein News Artikel, etc.
Legale Aspekte:
In der Schweiz ist das Scraping legal, solange die Daten nicht kommerziell verwendet werden und keine Vertragsrechte verletzt werden. Es ist jedoch ratsam, bei der Handhabung von Bildmaterial oder personenbezogenen Daten besonders vorsichtig zu sein. Anwendungen in diesem Kontext sollten vermieden werden. Ich habe bereits in einem früheren Blogbeitrag darauf hingewiesen. Meine Informationen stammen aus einer Quelle der Uni Zürich (27.04.2024), die hier verfügbar ist.
Code-Beispiel
Um sich nun ein besseres Bild machen zu können habe ich den code für das Selenium-Scraping hier zum Download zur Verfügung gestellt. Passend dazu haben ich die Orts-Liste für den Crawler auch noch hier abgelegt. Ihr dürft euch gerne bedinen!
Mögliche Anwendungen von Scraping als Business
- Preis Monitoring und Preisvergleich: Digitec hat 6.3 Mio Brack 250 Tausend, Booking 28 Mio. Unterkünfte AirBnB 7 Mio: Mehr als genug um ausgeklügelte Preisvergleiche durchzuführen und Learnings zu extrahieren. Ähnlich wie in bisherigen Blogs beschrieben.
- Wettbewerbsanalyse: Analysiert man die Inserate von Konkurrenten kann man Rückschlüsse auf deren Geschäft ziehen. z.B. wie lange bleibt ein Occasion Fahrzeug bei Anbieter A im Internet vs. Anbieter B? Wann werden Preise angepasst?
- Job Listings Aggregation: Zusammenführen von unterschiedlichen Job Inserate Quellen. Zusätzlich lässen sich durch historisierung auch insights zu den Firmen geben (z.B. Wann war das Inserat zuletzt ausgeschriben was rückschlüsse zu Fluktuation geben kann)
- Sentiment Analysis and Social Media Monitoring Wie wird über welche Firma öffentlich geschrieben?
Fazit
Insgesamt ist das Scraping eine äusserst nützliche Methode, um Daten aus dem Internet zu extrahieren, zu strukturieren und wertvolle Erkenntnisse zu gewinnen. Mit Kenntnissen über die wenigen technischen und fachlichen Hürden ist es für jeden möglich, diese Technik erfolgreich einzusetzen. Wenn Sie Daten für Preisvergleiche, Wettbewerbsanalysen, Job Listings oder Sentiment-Analysen benötigen, bietet Scraping eine effektive Lösung. Mit den richtigen Werkzeugen und Strategien können Sie das volle Potenzial des Internets nutzen, um Ihr Wissen zu erweitern und bessere Entscheidungen zu treffen.
(Bildquelle: http://www.actden.com/ie5/9_1.html - 28.04.24)