Zum Inhalt springen
Anmelden Registrieren

JavaScript rendern

SPAs und JS-lastige Seiten benötigen echte Browserausführung. Die Web Scraping API übernimmt das über ein einziges Flag.

Fügen Sie render_js=1 zu jeder Anfrage hinzu. Shifter startet eine frische Headless-Chrome-Instanz, navigiert zur URL und liefert das DOM nach dem Rendering zurück.

Terminal-Fenster
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&render_js=1"

JS-Rendering wird mit denselben 1 Credit pro erfolgreicher Anfrage abgerechnet wie statische Abrufe. Kein Aufpreis.

Die meisten SPAs sind fertig geladen, sobald ein bestimmtes Element erscheint. Verwenden Sie wait_for_css, um zu warten, bis dieser Selektor gerendert wird:

Terminal-Fenster
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://shop.example.com&render_js=1&wait_for_css=.product-price"

Die Anfrage wird abgeschlossen, sobald .product-price im DOM vorhanden ist, oder schlägt bei Zeitüberschreitung fehl (Standard 30s).

Begrenzen Sie die Gesamtzeit, die der Browser auf einer Seite verbringen darf, mit timeout (in Millisekunden):

Terminal-Fenster
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://slow.example.com&render_js=1&timeout=10000"

Nützlich beim Scrapen langsam ladender Dashboards, wenn Sie das anzeigen möchten, was nach 10 Sekunden sichtbar ist, statt ein vollständiges Rendering abzuwarten.

Scrollen, klicken oder beliebige Schritte vor der Erfassung ausführen mit js_instructions (URL-kodiertes JSON). Gängige Muster:

Scrollen, um unendliche Feeds zu laden:

[{"action": "scrollTo", "selector": "footer", "timeout": 5000, "block": "start"}]

Eine Schaltfläche vor dem Scrapen klicken:

[{"action": "click", "selector": "button.load-more", "timeout": 3000}]

Mehrere Schritte verketten:

[
{"action": "click", "selector": "button.accept-cookies"},
{"action": "scrollTo", "selector": "div.results"},
{"action": "wait", "duration": 2000}
]

Übergeben Sie das Array als URL-kodierten String in js_instructions.

Machen Sie einen Screenshot der gesamten Seite anstelle des DOM, indem Sie screenshot=1 hinzufügen. Die Antwort ist ein binäres PNG. Siehe Erweitert.

  • Statische HTML-Seiten (Nachrichtenartikel, Blogbeiträge, RSS-artige Inhalte)
  • JSON-APIs (direkten Abruf verwenden, nicht den Scraping-Endpunkt)
  • Dateien und Binärdaten

Das Überspringen von render_js ist bei der Latenz günstiger, wobei die Credits gleich bleiben.