Wie lade ich das Internet herunter?

Mögliches Inserat

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:

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:

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

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)