Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Preisvergleichs-Website mit Web Scraping und REST-API: Ein Tutorial für CST 3130

Lerne, wie du eine Preisvergleichs-Website mit Java Web Scraping, Spring, Hibernate und einer Node.js REST-API erstellst. Schritt-für-Schritt-Anleitung für CST 3130.

Preisvergleichs-Website Web Scraping Java REST-API Node.js CST 3130 Tutorial Spring Hibernate Projekt Price Comparison Website Big Data Web Development Java Multithreading Scraper MySQL Datenbank Design Frontend JavaScript AJAX Unit Testing Java Node.js KI-Tools Preisvergleich Studienprojekt Webentwicklung Hibernate JPA Beispiel Express API Integration

Einführung in die Preisvergleichs-Website

In diesem Tutorial erfährst du, wie du eine Preisvergleichs-Website entwickelst, die Produkte von verschiedenen Quellen scraped und über eine REST-API bereitstellt. Das Projekt basiert auf der Aufgabenstellung CST 3130 – Advanced Web Development with Big Data – Coursework 1. Du wirst Java für das Web Scraping, Spring und Hibernate für die Datenverarbeitung und Node.js für die REST-API nutzen. Die Frontend-Entwicklung erfolgt mit HTML, CSS und JavaScript.

Warum eine Preisvergleichs-Website?

Preisvergleichsseiten sind im E-Commerce unverzichtbar. Nutzer möchten schnell den günstigsten Preis finden. Ein aktuelles Beispiel: Im Mai 2026 vergleichen viele Studierende Preise für Laptops und Smartphones, um sich auf das nächste Semester vorzubereiten. Deine Website könnte genau das ermöglichen – mit Echtzeitdaten aus mehreren Shops.

Projektstruktur und Technologien

Das Projekt gliedert sich in drei Hauptkomponenten:

  • Web Scraping (Java): Mehrere Threads laden Daten von Ziel-Websites.
  • Datenbank (MySQL/MariaDB): Speichert die gescrapten Produkte und Preise.
  • Backend (Node.js) mit REST-API: Stellt die Daten für das Frontend bereit.

Optional kannst du Spring und Hibernate für die Java-Komponente verwenden, was zusätzliche Punkte bringt. Das Frontend wird rein clientseitig mit JavaScript umgesetzt.

Web Scraping mit Java und Threads

Der erste Schritt ist das Scrapen von Produktdaten. Du benötigst die URLs der Zielseiten und einen Parser (z.B. Jsoup). Erstelle eine Klasse Scraper, die in mehreren Threads arbeitet:

public class Scraper implements Runnable {
    private String url;
    public Scraper(String url) { this.url = url; }
    @Override
    public void run() {
        // Jsoup connect und parse
        // Extrahiere Name, Preis, Link
        // Speichere in Datenbank
    }
}

Verwende einen ExecutorService, um mehrere URLs parallel zu scrapen. Achte auf die Einhaltung der Robots.txt und eine angemessene Verzögerung zwischen Requests.

Datenbankdesign mit Hibernate

Entwerfe eine einfache Datenbank mit den Tabellen produkte und preise. Nutze Hibernate, um die Java-Objekte zu persistieren:

@Entity
@Table(name = "produkte")
public class Produkt {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String url;
    // Getter und Setter
}

Mit Spring Data JPA kannst du Repository-Schnittstellen definieren, um Daten einfach abzufragen.

REST-API mit Node.js

Die REST-API wird mit Node.js und Express erstellt. Sie liest Daten aus der MySQL-Datenbank und stellt sie als JSON bereit. Beispiel-API-Endpunkte:

  • GET /api/produkte?suche=laptop – Produkte mit Suchbegriff
  • GET /api/produkte/:id – Details zu einem Produkt

Verbinde dich mit dem MySQL-Client (z.B. mysql2) und führe Abfragen durch. Achte auf Sicherheit: Verwende Prepared Statements, um SQL-Injection zu vermeiden.

Integration der REST-API im Frontend

Das Frontend ruft die API per AJAX (Fetch API) auf und zeigt die Ergebnisse an. Ein einfaches Beispiel:

fetch('/api/produkte?suche=' + suchbegriff)
    .then(response => response.json())
    .then(data => {
        // Daten in HTML-Tabelle einfügen
    });

Gestalte die Benutzeroberfläche übersichtlich: Eine Suchleiste, Ergebnisse als Liste mit Produktname, Preis und Link zum Original.

Qualitätssicherung und Tests

Unit-Tests sind für die Bewertung wichtig. Teste den Scraper mit Mock-Objekten und die API mit Supertest. Beispiel für einen Java-Test:

@Test
public void testScraper() {
    Scraper scraper = new Scraper("test-url");
    // Überprüfe, ob Daten korrekt extrahiert werden
}

Dokumentiere alle Tests im Projektbericht.

Trendbeispiel: Preisvergleich für KI-Tools

Im Mai 2026 boomen KI-gestützte Schreibassistenten. Deine Website könnte Preise für Tools wie ChatGPT Pro, Jasper oder Copy.ai vergleichen. Nutzer suchen nach dem besten Angebot – genau das liefert deine Preisvergleichsseite. Dieses Beispiel macht das Projekt praxisnah und relevant.

Häufige Fehler vermeiden

  • Zu viele Requests: Drossle die Scraping-Geschwindigkeit, um nicht geblockt zu werden.
  • Fehlerhafte Daten: Validiere die gescrapten Daten vor dem Speichern.
  • Unsichere API: Implementiere Rate-Limiting und Authentifizierung, wenn nötig.

Denke daran: Deine Preisvergleichs-Website ist nur ein Beispiel. Du kannst auch andere Projekte wie eine Immobiliensuche umsetzen – Hauptsache, du scrapest Daten von mehreren Quellen und stellst sie übersichtlich dar.

Fazit

Mit diesem Tutorial hast du die Grundlagen für eine erfolgreiche Abgabe von CST 3130 Coursework 1. Fokussiere dich auf sauberen Code, eine funktionierende REST-API und ein ansprechendes Frontend. Viel Erfolg!