09. August 2026 · Von YasKad
D4Vinci/Scrapling

Scrapling: adaptives Web Scraping zwischen HTTP, Browser und Crawling

D4Vinci/Scrapling · 83.616★ · 8.546 forks

Alles Wissenswerte über D4Vinci/Scrapling: ein Python-Framework zum Extrahieren einzelner Seiten oder zum Ausführen paralleler Crawls, mit adaptiven Selektoren, Sessions und Browseroptionen.


Was Scrapling ist

Scrapling ist ein Web-Scraping-Framework für Python. Sein README verortet es auf einem Kontinuum von einer einzelnen Anfrage bis zu einem vollständigen Crawl: Es kombiniert einen Parser mit CSS-, XPath- und BeautifulSoup-ähnlichen Selektoren, HTTP- und Browser-Clients sowie eine Spider-API mit asynchronen Anfragen und Antworten.

Das herausragende Merkmal ist der adaptive Modus. Beim Speichern eines Selektors mit auto_save=True bewahrt das Projekt Informationen über das Element; bei einem späteren Durchlauf lässt sich mit adaptive=True versuchen, es wiederzufinden, falls sich die Struktur der Seite geändert hat. Das ist eine Hilfe bei Layoutänderungen, keine Garantie für korrekte Extraktion: Die gewonnenen Daten sollten weiterhin validiert werden.

Das Projekt bietet außerdem Clients mit TLS-Fingerprint- und Header-Fälschung, Chromium- oder Chrome-Automatisierung über Playwright, persistente Sessions, Proxy-Rotation und Blockierungserkennung. Das README behauptet, dass StealthyFetcher Cloudflare-Turnstile-Herausforderungen und Interstitials lösen kann; das ist eine Aussage des Projekts, keine Zertifizierung, dass es gegen jeden Schutzmechanismus funktioniert.

Geteilte Komposition: auf der einen Seite durchdringt ein schneller Datenstrom eine digitale Wand als Symbol für eine direkte HTTP-Anfrage; auf der anderen eine unauffällige Browser-Oberfläche mit einem holografischen Schild, der ein Sicherheitstor umgeht.

Der Ursprung: eine erste öffentliche Version im Oktober 2024

Die GitHub-API verzeichnet die Erstellung von D4Vinci/Scrapling am 13. Oktober 2024 um 20:29 UTC. Am selben Tag enthält die Historie den ersten Commit und, wenige Stunden später, den Commit a721073b, dessen Nachricht die Veröffentlichung der ersten öffentlichen Version beschreibt. Der vom Repository selbst enthaltene Zitationseintrag schreibt Scrapling Karim Shoair im Jahr 2024 zu.

Das GitHub-Konto D4Vinci weist Shoair als eine Person aus Ägypten aus, die sich für Informatik, Informationssicherheit und Web Scraping interessiert; er hatte zum Zeitpunkt der Abfrage 45 öffentliche Repositories und 3.558 Follower. Die Historie des ersten Tages zeigt den anfänglichen technischen Kontext: Kompatibilitätskorrekturen für Python 3.6 und 3.7, Veröffentlichung des Pakets und des CI-Workflows, Dokumentation und, am folgenden Tag, Version 0.1.2. Es wurde keine externe Launch-Ankündigung mit einer weiterreichenden Erzählung gefunden, weshalb dem Autor keine andere persönliche Motivation zugeschrieben wird.

Leuchtende digitale Zeitleiste, auf der ein mit "Oct 2024" beschrifteter Knoten eine Sequenz miteinander verbundener Commits entzündet, die sich zu einem größeren Netzwerk verzweigen.

Die Spannung, die das Design adressiert, ist in der Dokumentation explizit: Eine reine HTML-Parsing-Bibliothek löst weder dynamische Seiten noch Strukturänderungen, Sessions, Ratenbegrenzungen oder Anti-Automatisierungs-Abwehrmaßnahmen. Scrapling bündelt diese Schichten unter einer gemeinsamen API und behält dabei eine Schnittstelle bei, die Nutzern von Scrapy, Parsel und BeautifulSoup vertraut ist.

Philosophie und Prinzipien

Aus der Dokumentation und den Beitragsregeln lassen sich vier überprüfbare Prinzipien ableiten:

  • Eine einzige Bibliothek, mehrere Arbeitsebenen. Man kann Selector nur zum Parsen von HTML verwenden, Fetcher für HTTP, DynamicFetcher oder StealthyFetcher für den Browser und Spider für Crawls.
  • Widerstandsfähigkeit gegenüber Änderungen, aber mit Nachvollziehbarkeit. Adaptive Selektoren und die Suche nach ähnlichen Elementen versuchen, Fragilität zu reduzieren; die Dokumentation stellt diese Wiederherstellung nicht als unfehlbar dar.
  • Skalieren, ohne die operative Kontrolle aufzugeben. Spiders bringen Parallelität, Limits pro Domain, Pause und Fortsetzung mit Checkpoints, automatische Wartezeitanpassung, Wiederholungsversuche und Ergebnisexport mit.
  • Verantwortung der Nutzenden. Das README beschränkt die Nutzung auf Bildungs- und Forschungszwecke, verlangt die Einhaltung von Datenschutzgesetzen, Websitebedingungen und robots.txt. Bei Spiders ist robots_txt_obey eine explizite Option, die Disallow, Crawl-delay und Request-rate respektieren kann.

Futuristisches Kontrollpanel mit vier holografischen Feldern, die einen HTML-Parser, einen HTTP-Client, eine unauffällige Browser-Maske und ein Spider-Netz darstellen, alle verbunden mit einem zentralen Kern.

Wie es funktioniert

Installation und Auswahl des Clients

Der Parsing-Kern wird mit pip install scrapling installiert. Für Clients, Spiders und Browser verlangt das README pip install "scrapling[fetchers]" gefolgt von scrapling install; für MCP pip install "scrapling[ai]"; und für den vollständigen Umfang pip install "scrapling[all]". Zudem veröffentlicht es pyd4vinci/scrapling-Images auf Docker Hub und ghcr.io/d4vinci/scrapling:latest.

Der dokumentierte Ablauf gliedert sich wie folgt:

BedarfDokumentierte SchnittstelleBeispielmuster
HTML bereits vorhandenSelectorSelector("<html>...</html>") → .css() oder .xpath()
HTTP-AnfrageFetcher oder FetcherSessionFetcher.get(url)
Dynamischer BrowserDynamicFetcher oder DynamicSessionDynamicFetcher.fetch(url)
Browser mit Stealth-OptionenStealthyFetcher oder StealthySessionStealthyFetcher.fetch(url, headless=True)
CrawlingSpiderstart_urls und async def parse() definieren

Sessions bewahren Cookies und Zustand; Spiders können mehrere Sessions registrieren und eine Anfrage per sid an eine davon leiten. Der Crawl-Modus stellt die Vorlagen CrawlSpider, SitemapSpider und ShopifySpider bereit; er umfasst außerdem Linkextraktion, fortsetzbare Checkpoints, fortlaufende Ausgabe mit async for item in spider.stream() und Export nach JSON, JSONL, CSV oder XML.

Adaptiver Selektor, CLI und KI

Das zentrale Anpassungsmuster besteht darin, eine Auswahl zu speichern, etwa mit page.css('.product', auto_save=True), und sie später mit adaptive=True wiederherzustellen. Neben CSS und XPath bietet der Parser Textsuche, reguläre Ausdrücke, Filter und Navigation zwischen verwandten Elementen.

KI-Scanner mit einer Neon-Zielmarkierung, die auf ein leuchtendes Element in einer sich selbst neu ordnenden HTML-Codewand einrastet.

Die CLI erspart das Schreiben von Code für eine einfache Extraktion:

scrapling shell
scrapling extract get 'https://example.com' inhalt.md
scrapling extract fetch 'https://example.com' inhalt.md --no-headless
scrapling extract stealthy-fetch 'https://example.com' captchas.html --solve-cloudflare

Das README dokumentiert einen integrierten MCP-Server, aktivierbar mit dem Extra ai, der ausgewählte Inhalte vorbereitet, bevor sie an einen Assistenten übergeben werden, Browser-Sessions über Aufrufe hinweg aufrechterhält, Screenshots erfasst und einen entfernten Browser per CDP steuern kann. Es gibt außerdem einen Agent-Skill innerhalb von agent-skill/, damit Programmier-Agenten die aktuelle Scrapling-API abfragen können.

Futuristisches Terminal mit grünem Neontext, das scrapling extract ausführt, mit holografischen Feldern, die die Integration mit einem KI-Assistenten und einem MCP-Server zeigen.

Performance: Grenzen des Vergleichs

Das Repository veröffentlicht sein eigenes benchmarks.py. In seinem Textextraktionstest über 5.000 verschachtelte Elemente gibt es 1,98 ms für Scrapling an, 1,99 ms für Parsel/Scrapy, 2,48 ms für lxml und höhere Werte für PyQuery, Selectolax, MechanicalSoup und BeautifulSoup. Im Ähnlichkeitstest gibt es 2,29 ms für Scrapling und 12,46 ms für AutoScraper an. Das sind Durchschnittswerte, die das Projekt mehr als 100 Durchläufen zuschreibt; sie sind keine unabhängige Bewertung und ersetzen keinen Test unter der Last und den Richtlinien der Zielseite.

Zwei holografische Tachometer, die auf einer dunklen Bühne gegeneinander antreten; einer mit einem Python-Symbol dominiert das Rennen und lässt die anderen hinter sich, über Blöcken verschachtelter Daten.

Offizieller und halboffizieller Status

Das Paket scrapling wird laut den Links im README offiziell über PyPI vertrieben, und die Images, die das Projekt bei jeder Veröffentlichung angeblich erzeugt, werden über Docker Hub und die GitHub Container Registry angeboten. Dasselbe README verlinkt einen im Repository selbst gepflegten Skill sowie das Profil D4Vinci/scrapling-official auf Clawhub.

Das belegt Vertriebskanäle und einen vom Maintainer präsentierten Skill; es belegt nicht, dass Python, Anthropic, OpenAI, Cloudflare, Playwright oder ein anderer Anbieter die Wirksamkeit von Scrapling gegen Anti-Bot-Systeme bestätigt. Es wurde auch kein Beleg dafür gefunden, dass es als offizielle Erweiterung von Claude Code, Cursor oder einem anderen Anbietermarktplatz akzeptiert wurde. Die Verbreitung in MCP-Projekten und Skills von Drittanbietern ist daher halboffiziell oder community-getragen, keine Zertifizierung durch einen Anbieter.

Das Ökosystem

Vom Projekt gepflegte Materialien und Übersetzungen

Das README verlinkt Dokumentation auf Arabisch, Spanisch, brasilianischem Portugiesisch, Französisch, Deutsch, vereinfachtem Chinesisch, Japanisch, Russisch und Koreanisch. Das sind Übersetzungen, die im docs/-Baum des Hauptrepositorys gehostet werden; es sind keine separaten Repositories. Es umfasst außerdem agent-skill/, Dokumentation auf Read the Docs, den MCP-Server, ein Docker-Image und einen Discord des Projekts.

Als direkt verwandtes Material desselben Autors ergab die Suche nach Repositories von D4Vinci D4Vinci/Scrapling-Arabic-Crash-Course (6 Sterne): beschrieben als die Dateien eines arabischsprachigen Kurses zu Scrapling. Diese Suche förderte kein Evaluierungslabor oder einen Schwester-Marktplatz zutage, der Scrapling gewidmet ist.

Leuchtender digitaler Globus in einem dunklen Raum, bedeckt mit vernetzten Knoten, die Dokumentation in mehreren Sprachen und Community-Forks darstellen.

Ports, Forks und Community-Erweiterungen

Die GitHub-Suche und die abgerufene Liste der Forks ermöglichten die Überprüfung folgender Projekte. Die Zahlen sind GitHub-API-Sternezahlen zum Zeitpunkt der Messung, keine Garantie für Pflege, Kompatibilität oder Autorisierung durch den Autor.

  • dorisoy/Scrapling — ein ins Chinesische übersetzter Fork mit 17 Sternen. Seine Beschreibung stellt den adaptiven Selektor, die Anti-Bot-Clients und die Spiders auf Chinesisch vor; es ist die eindeutig identifizierbarste nicht-englische Community-Übersetzung unter den abgerufenen Ergebnissen.
  • Cedriccmh/claude-code-skill-scrapling — ein Skill für Claude Code, der angibt, automatisch einen Scrapling-Client auszuwählen und Website-Muster zu dokumentieren; 377 Sterne.
  • cyberchitta/scrapling-fetch-mcp — ein MCP-Server von Drittanbietern, der Assistenten den Zugriff auf Text geschützter Websites mittels Scrapling ermöglicht; 106 Sterne.
  • sangamsharma/Scrapling-openclaw — ein Fork oder eine Anpassung für OpenClaw; 2 Sterne. Seine niedrige Sternezahl und die nahezu identische Beschreibung zum Original erlauben keine Aussage über nachhaltige eigenständige Unterstützung.
  • Zu den Forks mit den meisten Sternen in der API-Antwort zählen smirk-dev/Scrapling (6), ahmed-el-halawani/scrapling (5) und dmore/Scrapling-red-stealth-python (4). Die API markiert sie als Derivate oder präsentiert sie mit einer Scrapling-Beschreibung; es wurde nicht genug Dokumentation gefunden, um sie als gepflegte Alternativen zu behandeln.

Das Ökosystem verbindet sich außerdem mit Projekten, die die Dokumentation als API- oder Benchmark-Referenzen nennt: Scrapy, Parsel, BeautifulSoup, lxml und Playwright. Diese Namen begründen in den abgerufenen Quellen Kompatibilität, Inspiration oder technischen Vergleich; sie implizieren keine unternehmerische Zugehörigkeit.

Zahlen zum Repository

Messung: 3. August 2026, GitHub-API.

MetrikWert
Sterne72.226
Forks7.174
Abonnenten263
Commits1.560
Von der API angegebene offene Issues6
HauptsprachePython
LizenzBSD-3-Clause
Erstellung13. Oktober 2024
Letzter Code-Push30. Juli 2026
Letzte Metadaten-Aktualisierung3. August 2026
Letzte Veröffentlichungv0.4.12, 26. Juli 2026

Die Gesamtzahl von 1.560 Commits stammt aus dem letzten Paginierungslink der Commits-API. Die von der API zurückgegebenen Hauptbeitragenden sind D4Vinci (Karim Shoair, 1.490 Beiträge), yetval (14), AbdullahY36 (10), mhillebrand (4), haosenwang1018 (4) und Bortlesboat (4). GitHub dupliziert die Gesamtsternezahl in watchers_count; deshalb wird hier subscribers_count als tatsächliche Abonnentenzahl angegeben. Das Feld open_issues_count kann offene Pull Requests einschließen, weshalb es nicht zwangsläufig nur Issues entspricht.

Wie man beiträgt

Der Leitfaden CONTRIBUTING.md verlangt, das Repository zu forken, den Fork zu klonen und von dev aus zu arbeiten; ein Pull Request gegen main wird abgelehnt. Der dokumentierte Anfangsablauf ist:

git clone https://github.com/<benutzername>/Scrapling.git
cd Scrapling
git checkout dev
python -m venv .venv
pip install -e ".[all]"
pip install -r tests/requirements.txt
scrapling install
pre-commit install

Funktionsbeiträge müssen Tests enthalten; Fehlerkorrekturen müssen Code enthalten, der den Fehler reproduziert. Der Leitfaden nutzt tox und GitHub-CI über die unterstützten Python-Versionen hinweg, zudem mypy, pyright, ruff, bandit, vermin und konventionelle Commit-Nachrichten. Er weist an, pytest tests -n auto auszuführen; um Browserkonflikte zu vermeiden, trennt er Tests, die nicht mit DynamicFetcher oder StealthyFetcher zusammenhängen, von sequenziellen Browser-Tests. Er begrüßt außerdem Übersetzungen und Spider-Vorlagen für Plattformen mit einer einheitlichen Struktur über viele Domains hinweg, jedoch keine Scraper für einzelne Websites.

Wie die Community reagierte

Die überprüfbare externe Resonanz ist auf Hacker News begrenzt, aber GitHub-Threads liefern konkrete Beispiele für Nutzung, Probleme und Korrekturen:

  • Auf Hacker News wurde 41832425 von d4vinci am 13. Oktober 2024 veröffentlicht und erreichte 4 Punkte und 1 Kommentar. Dieser einzige Kommentar stammt vom Autor selbst und stellt Scrapling als adaptive, hochperformante Bibliothek vor; es ist keine unabhängige Rezension. Die zweite Einreichung, 43852100, veröffentlicht von d4vinci am 30. April 2025, erhielt 1 Punkt und 0 Kommentare. Es wurde keine breitere Hacker-News-Diskussion gefunden, aus der sich ein Konsens ableiten ließe.
  • Im Issue #50 dankte restlessronin für die Arbeit und erläuterte einen praktischen Nutzen: das Abrufen von OpenAI-Dokumentation, die er sonst nicht erhalten konnte. Sein konkreter Einwand war, dass Meldungen an die Standardausgabe einen stdio-basierten MCP-Server störten. Abschließend gab er an, vorerst eine stdout-Umleitung beizubehalten, während die Integration gelöst wird; es ist Lob eines Nutzers, aber auch Beleg für eine reale Protokoll-Reibung.
  • In #215 berichtete nuclei-masta, dass sich der Browser mit ProxyRotator nicht öffnete und der Spider mit null Elementen endete. yetval identifizierte zunächst einen Konflikt in der Methodenauflösungsreihenfolge und dann ein Leck im Seitenpool der Proxy-Rotation; er eröffnete Pull Request #223. Nach dem Merge antwortete nuclei-masta, dass es gut funktioniere. Der Thread veranschaulicht eine gemeinschaftliche Korrektur, nicht dass die Kombination vor dem Fix fehlerfrei gewesen wäre.
  • In #366 bemängelte chcodex, dass der MCP-Server Steuerzeichen vor der Serialisierung einer Antwort nicht bereinigte und dass die Empfehlung der lokalen CLI ein entferntes MCP-Deployment nicht löste. yetval schlug eine Korrektur vor; chcodex bestätigte, dass sich der Fehler von einem XML-Kompatibilitätsfehler zu einer HTTP-200-Antwort wandelte, und der Maintainer berichtete von seiner Integration. Es ist eine vom Melder bestätigte Verbesserung, auch wenn das Issue zeigt, dass MCP-Integrationen mit echten Inhalten getestet werden müssen.

Scrapling im Vergleich zu anderen Ansätzen

AnsatzÜberprüfbare ÜbereinstimmungÜberprüfbarer Unterschied
ScrapyDie Spider-API wird als ähnlich zu Scrapy dokumentiert, und Scrapling bietet Integration über scrapling_response.Scrapling integriert HTTP-Clients, Browser-Clients, adaptive Selektoren und Sessions im selben README; die Quelle erlaubt keine Schlussfolgerung genereller Überlegenheit.
ParselBeide erscheinen im Performance-Vergleich des Parsers und verwenden CSS/XPath-bezogene Selektoren.Scrapling gibt an, Parsel-Code für sein Übersetzungs-Submodul adaptiert zu haben, und fügt Clients, Spiders und Elementanpassung hinzu.
BeautifulSoupDer Parser von Scrapling bietet find_all in einer BeautifulSoup ähnlichen Form.Die abgerufene Quelle beschreibt in Scrapling XPath, Knotennavigation, Sessions, Spiders und Browser, Fähigkeiten außerhalb dieser ähnlichen Parsing-Schnittstelle.
AutoScraperBeide erscheinen im internen Benchmark zur Elementähnlichkeit.Das README vergleicht die Zeit für adaptive Lokalisierung; es wurde keine Quelle gefunden, die einen Vergleich ihrer Architekturen oder Ergebnisse jenseits dieses projekteigenen Tests erlaubt.
PlaywrightDynamicFetcher nutzt Playwright für Chromium und Chrome, und Sessions unterstützen entferntes CDP.Playwright erscheint als Automatisierungsmodul innerhalb von Scrapling; es ist in der abgerufenen Dokumentation kein gleichrangiger Konkurrent.

Anwendungsfälle und wem dieses Repository helfen kann

  • Wer Seiten extrahieren muss, die sich häufig ändern, kann Selektoren speichern und adaptive Wiederherstellung anfordern, wobei das Ergebnis stets validiert werden sollte, um zu vermeiden, ein ähnliches Element mit dem erwarteten Datum zu verwechseln.
  • Teams, die zwischen statischen Websites, dynamischen Anwendungen und zustandsbehafteten Seiten wechseln, können mit Fetcher beginnen, zu DynamicFetcher oder StealthyFetcher aufsteigen und Cookies sowie Zustand mit Sessions bewahren, ohne die Parsing-Bibliothek zu wechseln.
  • Langlaufende Crawling-Operationen können Spider, Limits pro Domain, Checkpoints, Pause und Fortsetzung, fortlaufende Ausgabe und integrierte Exporter nutzen; der Entwicklungsmodus erlaubt zudem, beim Iterieren über parse() gespeicherte Antworten auf der Festplatte wiederzuverwenden.
  • Entwicklerinnen und Entwickler, die Assistenten oder MCP-Automatisierung integrieren, können den MCP-Server und den Agent-Skill nutzen, um ausgewählte Inhalte zu liefern und Sessions aufrechtzuerhalten, sollten aber den stdio-Transport, Steuerzeichen und die Website-Richtlinie testen, wie die Issues #50 und #366 zeigen.
  • Maintainer, die bereits Scrapy einsetzen, können den Dekorator scrapling_response prüfen, um Antworten mit dem Parser von Scrapling zu analysieren, ohne ihren gesamten Spider neu zu schreiben.

Holografische GitHub-Repository-Oberfläche mit Neon-Metriken, die einen zentralen Kern umkreisen: ein "72.2K"-Sternezähler und Datenströme, die 1.560 Commits darstellen.

Ressourcen


Hinweis: Dieser Artikel kombiniert das README, den Beitragsleitfaden und die Historie von D4Vinci/Scrapling, die GitHub-API und die Hacker-News-API, abgerufen am 3. August 2026. Zahlen und Linkstatus ändern sich mit der Zeit.

Kommentare