Supermarktpreise verfolgen
- Im Dezember 2022 wurde eine Website aufgebaut, um Preisänderungen bei drei großen Supermärkten in Griechenland zu verfolgen.
- Dabei mussten verschiedene Probleme gelöst werden, und es wurden viele Lektionen gelernt.
Scraping von JS-Websites
- Das Hauptproblem waren Websites, die mit JavaScript gerendert werden.
- Mit Playwright wurde ein Webbrowser programmatisch gesteuert.
- Playwright unterstützt Chromium-, Safari- und Firefox-Browser und kann mit Node, Java, .NET und Python verwendet werden.
- Es wurde Code geschrieben, um Infinite Scroll zu verarbeiten und Produktinformationen zu extrahieren.
Automatisierung
- Auf einem M1 MacBook Pro dauerte das Scraping eines kompletten Supermarkts zwischen 50 Minuten und 2 Stunden 30 Minuten.
- Für Entwicklung und Tests war das gut, aber es wurde eine dauerhaftere Lösung benötigt.
Einen alten Laptop verwenden?
- Es wurde versucht, einen alten Laptop aus dem Jahr 2013 zu verwenden, aber die Leistung war sehr enttäuschend.
Die Cloud nutzen?
- AWS war zu teuer, und Hetzner war deutlich günstiger.
- Es wurde beschlossen, Server von Hetzner zu verwenden.
Alten Laptop und Cloud nutzen!
- Das Scraping wurde auf einem Cloud-Server automatisiert, und der alte Laptop wurde als CI-Server verwendet.
- Mit Concourse wurde eine Pipeline eingerichtet, die die Scraping-Jobs täglich ausführt.
IP-Beschränkungen umgehen
- Wegen Firewall-Regeln von Akamai wurden Anfragen von nicht-residentiellen IP-Adressen blockiert.
- Mit Tailscale wurde erreicht, dass die Anfragen so aussehen, als kämen sie von der heimischen IP-Adresse.
Warum und wann etwas fehlschlägt
- Scraping-Projekte werden von Website-Entwicklern beeinflusst.
- Es gibt zwei Arten von Fehlern: Breaking Changes und Non-Breaking Changes.
- Wichtig ist, schnell Feedback zu bekommen.
Optimierung
- Es wurden verschiedene Optimierungen vorgenommen, darunter E-Mail-Benachrichtigungen, Hysterese, Timeouts und Retry-Einstellungen.
- Durch den Einsatz eines größeren Servers und weniger Data Fetches wurde die Performance verbessert.
Kosten
- Die Kosten für die Servernutzung bei Hetzner waren sehr niedrig.
- Mit dem kostenlosen Tarif von Cloudflare R2 wurden die Kosten für die Datenspeicherung gesenkt.
Fazit
- Es werden die wichtigsten Bausteine zum Aufbau einer Scraping-Pipeline beschrieben, um Preisänderungen in Supermärkten zu verfolgen.
Zusammenfassung von GN⁺
- Der Beitrag teilt Erfahrungen mit dem Einsatz von Playwright und Cloud-Diensten, um Preisänderungen in Supermärkten zu verfolgen.
- Er behandelt, wie sich mit JavaScript gerenderte Websites scrapen sowie Automatisierung und Optimierung umsetzen lassen.
- Es wird erklärt, wie sich mit Hetzner und Tailscale Kosten senken und IP-Beschränkungen umgehen lassen.
- Der Artikel kann für Menschen nützlich sein, die sich für Web Scraping und Automatisierung interessieren.
1 Kommentare
Hacker-News-Kommentare
Erfahrung mit einem ähnlichen Problem geteilt
Arbeitet in Neuseeland an einem ähnlichen Projekt
Hat eine ähnliche Website gebaut und viel Aufmerksamkeit bekommen
Die zwei großen Supermarktketten Australiens könnten durch KI-Algorithmen zur Preis-Analyse ein Monopol bilden
Seit über 8 Jahren im schwedischen Markt aktiv
Mit Preistransparenz wäre Tracking noch einfacher
Wie man Änderungen so vornimmt, dass der Scraper nicht ausfällt
Erfahrung mit Preis-Tracking nach einem Umzug in eine neue Region geteilt
Schwieriger als das Scraping selbst ist das Umgehen immer ausgefeilterer Blocker
Problem mit clientseitig gerendertem JavaScript