Wie man Trainingsdaten für maschinelles Lernen aus dem Web sammelt
Das Modell ist der einfache Teil. Eine saubere, deduplizierte, rechtlich einwandfreie und aktualisierbare Trainingsmenge aus dem offenen Web zu beschaffen, ist der Punkt, an dem Projekte tatsächlich ins Stocken geraten. Hier ist die Sammlungspipeline, von Anfang bis Ende.
Ein Modell zu trainieren ist oft der einfache Teil. Der Schritt, der maschinelles Lernen-Projekte ins Stocken bringt, liegt weiter oben: das Zusammenstellen einer sauberen, deduplizierten, rechtlich einwandfreien und aktualisierbaren Trainingsmenge aus dem offenen Web. Rohseiten zu bekommen ist günstig — ein Crawler erledigt das — aber sie in nutzbare Zeilen zu verwandeln, ist die eigentliche Arbeit, und darum geht es in diesem Leitfaden: Beschaffung, Reinigung zu strukturiertem Text, Deduplikation, Sampling, Lizenzierung und die Aktualisierungspipeline, die ein Modell vor dem Veralten bewahrt.
Beginnen Sie mit dem Signal, nicht mit dem Scraper
Bevor Sie irgendeinen Sammlungscode schreiben, definieren Sie genau, was das Modell lernen muss und welche Quellen dieses Signal tragen. Daten gibt es in drei Formen, und jede hat unterschiedliche Sammlungskosten: strukturiert (Tabellen, Produktfeeds — leicht zu parsen), halbstrukturiert (JSON, CSV, XML-Endpunkte — oft das sauberste, was eine Seite bietet) und unstrukturiert (Artikeltexte, Bewertungen, Forenthreads). Unstrukturierte Inhalte machen 80-90% aller Daten aus und Berichten zufolge werden nur etwa 0,5% davon jemals genutzt, was genau die Lücke ist, die ein gut gebauter Webdatensatz schließt. Entscheiden Sie, welche Form Sie anstreben, bevor Sie etwas skalieren.
Crawlen Sie zu sauberem Text, nicht zu rohem HTML
Rohes HTML in eine Trainingspipeline einzuspeisen bedeutet, Navigation, Werbung, Cookie-Banner und Skripttags einzuspeisen — Lärm, der den Datensatz verschlechtert. Der dauerhafte Schritt ist, direkt zu sauberem, strukturiertem Text zu crawlen. Eine Scraper API, die Markdown zurückgibt, erledigt das Boilerplate-Stripping für Sie, sodass ein Crawl von Tausenden von Seiten als lesbarer Inhalt ankommt statt als Tag-Suppe:
import requests
def fetch_clean(url):
r = requests.get(
"https://api.quantumproxies.io/scrape",
params={"url": url, "format": "markdown"},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=60,
)
return r.json()["content"] # boilerplate-stripped markdown
corpus = [fetch_clean(u) for u in seed_urls]
Markdown ist ein gutes Ziel, weil es die Struktur (Überschriften, Listen, Tabellen) beibehält, während es die Präsentationsschicht fallen lässt — aus dem gleichen Grund ist es der bevorzugte Input für RAG-Pipelines und LLM-Training gleichermaßen. Leiten Sie den Crawl durch rotierende Residential-IPs, damit ein großer Sammlungslauf nicht die ganze Aufgabe auf halbem Weg blockiert.

Deduplizieren, bevor es das Modell vergiftet
Nahezu doppelte Dokumente sind der stille Killer von Webdatensätzen — derselbe Artikel, der auf zehn Seiten syndiziert wird, Boilerplate-Fußzeilen, erneut gepostete Inhalte. Trainieren Sie darauf, und Sie übergewichten alles, was sich wiederholt. Hashen Sie den normalisierten Inhalt jedes Dokuments und entfernen Sie Kollisionen; für nahezu Duplikate fängt ein Shingle- oder MinHash-Ansatz die auf, die ein exakter Hash verpasst:
import hashlib
def content_hash(text):
norm = " ".join(text.lower().split()) # normalise whitespace/case
return hashlib.sha256(norm.encode()).hexdigest()
seen, unique = set(), []
for doc in corpus:
h = content_hash(doc)
if h not in seen:
seen.add(h)
unique.append(doc)
print(f"kept {len(unique)} of {len(corpus)} after dedup")
Der Inhaltshash, den Sie hier berechnen, hat eine doppelte Funktion — er ist auch der Weg, wie Sie bei der nächsten Crawl-Session Änderungen erkennen, also behalten Sie ihn.
Gezielt sampeln, ehrlich lizenzieren
Mehr Daten sind nicht automatisch bessere Daten. Eine repräsentative Stichprobe schlägt einen unausgewogenen Haufen — wenn 90% Ihres Crawls von einer Seite oder in einer Sprache sind, lernt das Modell diese Verzerrung. Sampeln Sie über Ihre Quellen und Klassen hinweg, sodass der Satz die Verteilung widerspiegelt, die Sie tatsächlich modellieren möchten. Zur Lizenzierung: Webdaten sind nicht automatisch frei zum Trainieren. Filtern Sie nach Quellbedingungen, respektieren Sie Robots-Direktiven, wo sie gelten, und behalten Sie die Herkunft (die Quell-URL und das Abrufdatum) neben jeder Zeile, damit Sie nachweisen können, woher jedes Beispiel stammt. Unser Hinweis zur Rechtmäßigkeit des Scrapings im Jahr 2026 deckt die Grenzen von personenbezogenen Daten und Lizenzen ab (informativ, keine Rechtsberatung).
Ground Truth: der Teil, den das Web Ihnen nicht gibt
Für überwachtes Lernen benötigen Sie Labels, und das offene Web liefert sie selten. Einige Datensätze sind von Natur aus gelabelt (eine Bewertung neben einer Rezension, das nächste Wort in einem Satz), weshalb diese günstig in großem Maßstab zu sammeln sind. Alles andere benötigt einen Ground-Truth-Schritt: Labeln durch Domänenexperten oder Crowdsourcing über einen Marktplatz. Wenn Sie crowdsourcen, sichern Sie die Qualität, indem Sie Aufgaben mit bekannten Antworten einstreuen und Arbeiter ablehnen, die sie nicht bestehen — das ist ein gut untersuchter Fehlermodus. Wo möglich, bevorzugen Sie natürlich gelabelte Webdaten; es ist der Unterschied zwischen einem Datensatz, den Sie in einer Woche erstellen können, und einem, der ein Labeling-Budget benötigt.
Aktualisieren, weil Daten veralten
Sammlung ist nie einmalig. Preise ändern sich, Seiten werden umgeschrieben, neue Inhalte erscheinen — ein Modell, das auf einem eingefrorenen Schnappschuss trainiert wurde, entfernt sich von der Welt, die es vorhersagen soll. Bauen Sie die Aktualisierung von Anfang an ein: Re-crawlen Sie nach einem Zeitplan, vergleichen Sie den Inhaltshash jeder Seite mit dem letzten Lauf und verarbeiten Sie nur das, was sich tatsächlich geändert hat. Das hält die Aktualisierungskosten proportional zu den tatsächlichen Änderungen, anstatt alles erneut herunterzuladen:
def refresh(url, last_hash):
text = fetch_clean(url)
h = content_hash(text)
if h == last_hash:
return None # unchanged, skip re-processing
return {"url": url, "text": text, "hash": h, "fetched": now()}
Für schnelllebige Domänen oder wenn Sie lieber einen verwalteten Feed konsumieren möchten, als den Crawl selbst durchzuführen, bietet Ihnen Webdaten für LLMs saubere, aktualisierte Inhalte, ohne die Pipeline zu pflegen.

Crawlen Sie das Web, um Markdown in großem Maßstab zu bereinigen
Häufig gestellte Fragen
Woher bekommen Sie Trainingsdaten für maschinelles Lernen?
Drei Hauptquellen: bestehende öffentliche Datensätze (Kaggle, Google Dataset Search, akademische Korpora), interne First-Party-Daten und das offene Web durch Crawling. Das Web ist die größte und frischeste Quelle, erfordert aber die meiste Arbeit — Reinigung, Deduplikation, Sampling und Lizenzierung. Für viele moderne Modelle ist ein Crawl relevanter Seiten zu sauberem Markdown der schnellste Weg zu einem domänenspezifischen Datensatz, der noch nicht existiert.
Wie viele Trainingsdaten brauche ich?
Es hängt von der Aufgabe und dem Modell ab, und die ehrliche Antwort ist: klein anfangen und skalieren, bis die Leistung stagniert. Trainieren Sie auf einer repräsentativen Stichprobe, messen Sie die Genauigkeit auf einem zurückgehaltenen Testset (ein 70/30-Split ist ein häufiger Ausgangspunkt), fügen Sie dann mehr Daten hinzu und beobachten Sie, ob die Metrik weiterhin verbessert wird. Qualität und Repräsentativität sind in der Regel wichtiger als das reine Volumen.
Ist es legal, Webdaten für ML-Training zu scrapen?
Das Sammeln öffentlicher Daten ist weitgehend vertretbar, aber die Nutzung zum Trainieren wirft Lizenz- und, wo personenbezogene Daten involviert sind, Datenschutzfragen auf. Filtern Sie nach Quellbedingungen, vermeiden Sie personenbezogene Daten, die Sie nicht benötigen, behalten Sie die Herkunft für jedes Beispiel und respektieren Sie Robots-Direktiven, wo sie gelten. Dies ist allgemeine Information, keine Rechtsberatung — holen Sie sich rechtlichen Rat für einen kommerziellen Datensatz im großen Maßstab.
Wie halte ich einen Trainingsdatensatz frisch?
Planen Sie Re-Crawls und verwenden Sie einen Inhaltshash, um Änderungen zu erkennen, und verarbeiten Sie nur Seiten, die sich tatsächlich bewegt haben. Versionieren Sie Ihren Datensatz, damit Sie reproduzieren können, welcher Schnappschuss welches Modell trainiert hat, und behalten Sie Abrufdaten in jeder Zeile. Eine inkrementelle, änderungsdetektierte Aktualisierung hält die Kosten proportional zu den tatsächlichen Änderungen, anstatt den gesamten Korpus bei jedem Zyklus erneut herunterzuladen.
Das Modell bekommt die Schlagzeilen, aber der Datensatz entscheidet über das Ergebnis. Beschaffen Sie das richtige Signal, crawlen Sie zu sauberem Markdown, deduplizieren Sie gründlich, sampeln Sie ehrlich, behalten Sie die Herkunft bei und bauen Sie die Aktualisierung von Anfang an ein. Wenn Sie die Sammlungspipeline richtig machen, wird alles nachgelagerte einfacher. Wenn Sie speziell auf Fine-Tuning zusteuern, setzt unser Leitfaden zum Erstellen eines Fine-Tuning-Datensatzes aus dem Web dort an, wo dieser aufhört.