Mit der Anfrage beginnen, nicht mit der Benutzeroberfläche
Öffnen Sie vor dem Schreiben der Paginierungslogik die DevTools und beobachten Sie, was sich beim Wechsel zum nächsten Stapel ändert.- Öffnen Sie die Registerkarte „Network“ und filtern Sie nach Fetch/XHR.
- Wählen Sie die nächste Seite aus, scrollen Sie nach unten oder klicken Sie auf „Mehr laden“.
- Untersuchen Sie Anfrage-URL, Abfrageparameter, Anfrageinhalt und Antwort.
- Entscheiden Sie, ob der Scraper Links folgen, mit der Seite interagieren oder einen API-Endpunkt direkt aufrufen sollte.
offset=40 aufrufen. Ein Seitenlink könnte Ergebnisse nach der URL-Änderung tatsächlich per JavaScript laden.
Nummerierte Seiten
Nummerierte Paginierung ist der einfachste Fall, weil der nächste Ort in der URL sichtbar ist:0 beginnen, Parameternamen wie p oder start und Websites, die bei einer ungültigen Seitennummer erneut Seite eins zurückgeben. Eine wiederholte erste Seite ist problematischer als eine leere, weil sie unbemerkt Duplikate erzeugen kann.
Weiter-Links
Manche Websites zeigen keine Seitennummern, sondern nur einen „Weiter“-Link oder Pfeil. Handelt es sich um einen normalen Anker, behandeln Sie die Paginierung als Verfolgung von Links:seen_urls ist wichtig. Fehlerhaft konfigurierte Websites verweisen mit dem letzten „Weiter“-Link manchmal auf die aktuelle oder erste Seite. Prüfen Sie außerdem deaktivierte Zustände wie aria-disabled="true", disabled oder eine disabled-Klasse, bevor Sie dem Link vertrauen.
Unendliches Scrollen
Unendliches Scrollen wirkt wie ein reines Browserproblem, verwendet darunter aber meist eine API. Scrollen Sie bei geöffneten DevTools einmal und suchen Sie nach einer Anfrage, die den nächsten Datensatzstapel abruft. Relevante Parameter heißen häufigoffset, page, after, cursor oder limit.
Ist der Endpunkt nutzbar, rufen Sie ihn direkt auf:
Mehr-laden-Schaltflächen
Eine Mehr-laden-Schaltfläche ist gesteuertes unendliches Scrollen. Die Seite wartet auf einen Klick, bevor sie den nächsten Stapel anfordert. Das erleichtert die Taktung, weil der Scraper warten, die neue Elementanzahl prüfen und eine fehlgeschlagene Anfrage wiederholen kann. Ruft die Schaltfläche eine klar strukturierte API auf, verwenden Sie diese. Andernfalls klicken Sie in einer Browserschleife:Offset- und Cursor-APIs
Moderne Websites paginieren Daten häufig auf API-Ebene. Offset-Paginierung fragt eine numerische Position ab:Retry-After, wiederholen Sie temporäre Fehler mit Backoff und speichern Sie den Fortschritt, wenn ein Neustart ab Seite eins bei großen Aufträgen teuer wäre.
Hybride Paginierung
Echte Websites kombinieren häufig mehrere Muster:- Eine Kategorie besitzt nummerierte Seiten, auf denen nach dem Scrollen jeweils weitere Produkte nachgeladen werden.
- Eine Suchseite beginnt mit „Mehr laden“ und wechselt dann zu nummerierten Links.
- Eine Oberfläche mit Registerkarten besitzt getrennte Paginierung für „Neu“, „Beliebt“ und „Sale“.
- Eine Listenseite paginiert Ergebnis-URLs; jede Detailseite besitzt wiederum eigene paginierte Rezensionen oder Kommentare.
Praktische Schutzmaßnahmen
- Stoppsignal definieren. Leere Ergebnismengen, fehlende Weiter-Links, deaktivierte Schaltflächen,
hasNextPage: false, wiederholte Cursor und maximale Iterationszahlen sind gültige Stoppsignale. - Duplikate erkennen. Unendliches Scrollen und Cursor-APIs können Datensätze wiederholen, wenn sich Daten während eines Laufs ändern. Speichern Sie stabile IDs oder kanonische URLs.
- Navigation drosseln. Fügen Sie zwischen Stapeln kleine zufällige Pausen ein. Browser-Automatisierung sollte auf Inhaltsänderungen warten, nicht nur auf feste Timeouts.
- Fehler protokollieren. Scheitert eine Seite nach mehreren Versuchen, speichern Sie URL oder Cursor und fahren Sie möglichst fort.
- Legitime und stabile APIs bevorzugen. Direkte API-Paginierung ist meist schneller und leichter zu validieren als Browsersteuerung.
- Ein visuelles Tool verwenden, wenn Geschwindigkeit wichtiger als eigener Code ist. In Octoparse lässt sich Paginierung für übliche Weiter-, Mehr-laden- und Infinite-Scroll-Abläufe visuell konfigurieren und anschließend lokal oder in der Cloud ausführen.