CLI-Tool
D4Vinci/Scrapling avatar
D4Vinci/Scrapling

Scrapling: adaptives Web-Scraping-Framework mit Element-Relokation und Spider-System

Ein adaptives Web-Scraping-Framework, das alles von einer einzelnen Anfrage bis hin zu einem vollständigen Crawl verarbeitet!

81.121 Sterne8.199 ForksPythonBSD-3-Clause

Auf einen Blick

Was ist das?
D4Vinci/Scrapling ist ein Python-Framework, das vom einzelnen Request bis zum parallelen Crawl reicht, sich Page-Änderungen merkt und Anti-Bot-Systeme umgeht. Der Text ordnet Fetcher, adaptiven Parser, Spiders und Ökosystem ein.
Für wen ist es gedacht?
Scrapling passt für Python-Nutzer, die wiederkehrende Extraktionen auf Seiten bauen, deren Struktur sich ändern kann, und die gleichzeitig Anti-Bot-Hürden wie Cloudflare Turnstile ohne separate Werkzeuge überwinden wollen. Weniger geeignet ist es für Projekte, die Scraping-Dienste gegen deren AGB betreiben oder rechtlich umstrittene Ziele ansteuern, denn das Umgehen von Schutzsystemen bleibt eine Verantwortungsfrage des Betreibers.
Darf ich es kommerziell nutzen?
Ja. BSD-3-Clause ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 1 Tag.
In welcher Sprache ist es geschrieben?
Hauptsächlich Python, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Ein Framework vom Einzelrequest bis zum Vollcrawl

Scrapling von D4Vinci beschreibt sich als adaptives Web-Scraping-Framework, das alles von einem einzelnen Request bis zu einem groß angelegten Crawl abdeckt. Die Messlatte der Selbstbeschreibung ist hoch: Blazing fast crawls mit Echtzeitstatistiken und Streaming, gebaut von Web Scrapern für Web Scraper und reguläre Nutzer. Die Zahlen unterstreichen die Verbreitung nur bedingt, sie zeigen aber die Größenordnung: rund 76.900 Sterne und 7.700 Forks auf GitHub, bei nur vier offenen Issues.

Die Lizenz ist BSD-3-Clause, die Sprache Python, und die Distribution läuft über PyPI, ein Docker-Image unter pyd4vinci/scrapling sowie eine eigene Dokumentationsplattform unter scrapling.readthedocs.io. Ein Blick in die Repository-Metadaten zeigt aktive Pflege: v0.4.13 erschien am 9. August 2026, v0.4.14 am 10. August und v0.4.15 am 23. August 2026.

Auffällig ist die Internationalisierung: Das README ist neben Englisch in Arabisch, Spanisch, Portugiesisch, Französisch, Deutsch, Chinesisch, Japanisch, Russisch und Koreanisch verfügbar, dazu kommen ein Discord-Kanal und ein eigener Account auf X. Das Projekt grenzt sich damit bewusst von einer reinen Entwickler-Nische ab und adressiert auch Nutzer ohne Scraping-Erfahrung.

Der adaptive Parser: Elemente, die Redesigns überleben

Das eigentliche Alleinstellungsmerkmal von Scrapling ist der Parser, der aus Website-Änderungen lernt. Laut README verortet er Elemente automatisch neu, wenn Seiten aktualisiert werden. Im Codebeispiel zeigt sich der Mechanismus: Ein Aufruf p.css('.product', auto_save=True) speichert die gefundene Struktur, und bei einem späteren Lauf genügt p.css('.product', adaptive=True), damit geänderte Seiten erneut gefunden werden.

Das adressiert ein klassisches Problem des Scrapings: Selektoren, die auf exakte Pfadangaben setzen, brechen, sobald eine Website ihr Markup umstellt. Mit dem adaptiven Ansatz verschiebt sich der Wartungsaufwand vom Nachbessern gebrochener Selektoren hin zum einmaligen Aufsetzen der extrahierten Elemente. Für regelmäßige Jobs auf Drittseiten ist das ein spürbarer Unterschied im Betriebsaufwand.

Die Dokumentation widmet den Auswahlmethoden eine eigene Seite unter scrapling.readthedocs.io/en/latest/parsing/selection.html. Wer bestehende Pipelines hat, sollte die Grenzen des Lernmechanismus prüfen: Das README beschreibt das Neulokalisieren als Automatic, quantifiziert aber nicht, mit welcher Zuverlässigkeit krasse Umbauten erkannt werden. Ein Test mit einer echten Änderungshistorie der eigenen Zielseite ist daher der realistische Weg, die Eignung zu bewerten.

Fetcher gegen Anti-Bot-Systeme

Die Fetcher-Schicht bringt laut README von Haus aus Wege mit, Anti-Bot-Systeme wie Cloudflare Turnstile zu umgehen. Im Codebeispiel tauchen vier Klassen auf: Fetcher, AsyncFetcher, StealthyFetcher und DynamicFetcher, importiert aus scrapling.fetchers. Der Aufruf StealthyFetcher.fetch('https://example.com', headless=True, network_idle=True) illustriert den Stil: Headless-Betrieb und ein Warten auf Netzruhe sind Parameter, keine manuellen Vorarbeiten.

Für die Wahl des passenden Fetchers gibt es eine eigene Dokumentationsseite unter scrapling.readthedocs.io/en/latest/fetching/choosing.html. Das ist pragmatisch, denn die Vier unterscheiden sich im Verhalten: synchrone und asynchrone Basisabrufe auf der einen Seite, verdeckter und dynamischer Abruf über eine echte Browserumgebung auf der anderen. Welcher Weg zum Ziel führt, hängt am Schutzsystem der Zielseite.

An dieser Stelle gehört eine Einordnung: Das Umgehen von Bot-Schutz ist ein Mittel für legitime Datenerhebung ebenso wie für unerwünschtes Sammeln. Scrapling stellt die Technik bereit, die Verantwortung für Einhaltung der Nutzungsbedingungen und der Rechtslage liegt beim Anwender. Das README selbst positioniert das Umgehen von Turnstile als Auspackfunktion und verweist für Unternehmensprotektoren wie Akamai oder DataDome auf Sponsor-Anbieter, die deren Token-Erzeugung als API anbieten.

Spiders mit Pause, Resume und Proxy-Rotation

Für groß angelegte Crawls bietet Scrapling ein Spider-Framework. Das README-Beispiel zeigt den Aufbau: Eine Klasse MySpider(Spider) bekommt einen Namen und start_urls, und die async def parse-Methode verarbeitet Response-Objekte und liefert Dictionaries zurück, etwa Titel aus response.css('.product'). Der Start läuft über MySpider().start(), also über eine vertraute Klassenstruktur statt über Callback-Gewirr.

Die Betriebsmerkmale sind im Text konkret benannt: pausierbare und fortsetzbare Crawls, automatische Proxy-Rotation und eine Crawl-Geschwindigkeit, die sich an der Antwortzeit der Website orientiert und zurücknimmt, sobald die Seite anfängt zu blocken. Das adressiert zwei klassische Betriebsfehler, nämlich den Abbruch langer Läufe und das Zu-schnell-Crawlen, das Schutzsysteme aktiviert. Dokumentiert ist das unter scrapling.readthedocs.io/en/latest/spiders/architecture.html und einer eigenen Seite zum Proxy-Blocking.

Wer von Frameworks wie Scrapy kommt, erkennt die Analogie im Klassenmodell; Scrapling kombiniert diese Struktur mit dem adaptiven Parser und den Fetchern, sodass der Sprung vom Einzelseiten-Extrakt zum Crawl im selben Werkzeug bleibt. Ein separates Spider-Framework neben dem Hauptwerkzeug zu betreiben, ist damit nicht nötig.

CLI, MCP-Server und Agent-Skills

Scrapling erschließt seine Funktionen über mehrere Oberflächen. Die CLI hat eine eigene Dokumentationsseite unter scrapling.readthedocs.io/en/latest/cli/overview.html, also für Nutzer, die ohne Python-Code Abfragen bauen wollen. Auf der anderen Schnittstelle stehen KI-Agenten: Das README verlinkt einen MCP-Server, mit dem Sprachmodelle Scrapling-Funktionen ansteuern können, sowie einen Agent-Skill und einen offiziellen Eintrag bei einem Skill-Hub.

Diese Dreiteilung in Bibliothek, CLI und Agenten-Anbindung ist konsequent: Dieselben Parser und Fetcher dienen dem Programmierer, dem Kommandozeilennutzer und dem Agenten. Für Teams, die Scraping-Aufgaben an interne Assistenten delegieren wollen, ist der MCP-Weg ein direkter Integrationspfad, ohne eigenen Kleber-Code.

Der Betrieb über Docker ergänzt das Bild: Das Image pyd4vinci/scrapling auf Docker Hub macht die Abhängigkeiten der Fetcher transportabel, was besonders bei StealthyFetcher und DynamicFetcher relevant ist, weil die eine vollständige Browserumgebung brauchen. Die Download-Zahlen werden über eine ClickHouse-Dashboard-Verlinkung öffentlich nachvollzogen, ein ungewöhnlicher Transparenzgrad für ein Scraping-Projekt.

Fazit: Werkzeug für wiederkehrende Extraktion mit Grenzen

Scrapling vereint drei Bausteine, die sonst getrennt gepflegt werden: einen Parser, der Markup-Änderungen übersteht, Fetcher mit eingebautem Anti-Bot-Umweg und ein Spider-Framework mit Rücksichtnahme auf Zielserver. Für wiederkehrende Extraktionen auf fremden Websites ist diese Kombination ein vollständiger Werkzeugkasten, der vom Prototyp bis zum Rotationsbetrieb reicht, BSD-3-lizenziert und in Python verwendbar.

Grenzen liegen im Detail: Das README quantifiziert weder die Zuverlässigkeit des adaptiven Neulokalisierens noch den Schutzumfang der Fetcher gegenüber anderen Protektoren als Turnstile, und für Akamai oder DataDome verweist es auf kostenpflichtige Drittanbieter. Wer stärksten Enterprise-Schutz durchdringen muss, plant also Zusatzkosten ein oder beschränkt sich auf wenige Ziele. Ein sinnvoller Einstieg ist das README-Beispiel mit StealthyFetcher und auto_save=True gegen eine eigene Testseite, gefolgt von einem bewusst herbeigeführten Redesign, um das Verhalten von adaptive=True in der eigenen Datenlage zu messen, bevor man die erste Produktionspipeline darauf aufbaut.

Redaktionelles Fazit

Scrapling passt für Python-Nutzer, die wiederkehrende Extraktionen auf Seiten bauen, deren Struktur sich ändern kann, und die gleichzeitig Anti-Bot-Hürden wie Cloudflare Turnstile ohne separate Werkzeuge überwinden wollen. Weniger geeignet ist es für Projekte, die Scraping-Dienste gegen deren AGB betreiben oder rechtlich umstrittene Ziele ansteuern, denn das Umgehen von Schutzsystemen bleibt eine Verantwortungsfrage des Betreibers. Vor der Übernahme sollte man das Beispiel mit StealthyFetcher.fetch und auto_save=True gegen eine eigene Zielseite laufen lassen, die Elemente nach einer absichtlich erzeugten Strukturänderung mit adaptive=True wiederfinden lassen und die Grenzen in der Dokumentation unter scrapling.readthedocs.io gegen den eigenen Anwendungsfall abgleichen.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen