09 de agosto de 2026 · Por YasKad
D4Vinci/Scrapling

Scrapling: extracción web adaptable entre HTTP, navegador y rastreo

D4Vinci/Scrapling · 83.616★ · 8.546 forks

Todo lo que hay que saber sobre D4Vinci/Scrapling: un marco de Python para extraer páginas aisladas o ejecutar rastreos concurrentes, con selectores adaptativos, sesiones y opciones de navegador.


Qué es Scrapling

Scrapling es un marco de extracción web para Python. Su README lo sitúa en un continuo que va desde una petición única hasta un rastreo completo: combina un analizador con selectores CSS, XPath y métodos similares a BeautifulSoup; clientes HTTP y de navegador; y una API de arañas con peticiones y respuestas asíncronas.

La característica distintiva es el modo adaptativo. Al guardar un selector con auto_save=True, el proyecto conserva información del elemento; en una ejecución posterior se puede solicitar adaptive=True para intentar localizarlo si cambió la estructura de la página. Es una ayuda para cambios de diseño, no una garantía de extracción correcta: conviene validar los datos obtenidos.

El proyecto también ofrece clientes con suplantación de huella TLS y cabeceras, automatización de Chromium o Chrome mediante Playwright, sesiones persistentes, rotación de proxies y detección de bloqueos. El README afirma que StealthyFetcher puede resolver desafíos de Cloudflare Turnstile e intersticiales; es una afirmación del proyecto, no una certificación de que funcionará frente a cualquier protección.

Composición dividida: a un lado un flujo de datos veloz atraviesa un muro digital representando una petición HTTP directa; al otro, una interfaz de navegador sigiloso con un escudo holográfico sorteando una verja de seguridad.

El origen: una primera versión pública en octubre de 2024

La API de GitHub registra la creación de D4Vinci/Scrapling el 13 de octubre de 2024 a las 20:29 UTC. Ese mismo día, el historial contiene el commit inicial y, pocas horas después, el commit a721073b, cuyo mensaje describe la salida de la primera versión pública. La cita bibliográfica incluida por el propio repositorio atribuye Scrapling a Karim Shoair en 2024.

La cuenta D4Vinci de GitHub identifica a Shoair como una persona de Egipto interesada en informática, seguridad de la información y extracción web; tenía 45 repositorios públicos y 3.558 seguidores en la consulta. El propio historial de la primera jornada deja ver el contexto técnico inicial: correcciones de compatibilidad para Python 3.6 y 3.7, publicación del paquete y del flujo de CI, documentación y, al día siguiente, la versión 0.1.2. No se recuperó un anuncio de lanzamiento externo con una narración más amplia, por lo que no se atribuye otra motivación personal al autor.

Línea temporal digital brillante donde un nodo con la fecha "Oct 2024" enciende una secuencia de commits interconectados hacia una red más amplia.

La tensión que aborda el diseño está explícita en la documentación: una biblioteca de análisis de HTML no resuelve por sí sola páginas dinámicas, cambios de estructura, sesiones, límites de velocidad ni defensas contra automatización. Scrapling reúne esas capas bajo una API común y conserva una interfaz familiar a Scrapy, Parsel y BeautifulSoup.

Filosofía y principios

De la documentación y las normas de contribución se desprenden cuatro principios verificables:

  • Una sola biblioteca, varios niveles de trabajo. Se puede usar Selector sólo para analizar HTML, Fetcher para HTTP, DynamicFetcher o StealthyFetcher para navegador, y Spider para rastreos.
  • Resistencia a cambios, pero con trazabilidad. Los selectores adaptativos y la búsqueda de elementos similares intentan reducir fragilidad; la documentación no presenta esa recuperación como infalible.
  • Escalar sin abandonar el control operativo. Las arañas incorporan concurrencia, límite por dominio, pausas y reanudaciones con puntos de control, ajuste automático de espera, reintentos y exportación de resultados.
  • Responsabilidad del usuario. El README restringe el uso a fines educativos y de investigación, exige cumplir leyes de privacidad, condiciones del sitio y robots.txt. En las arañas, robots_txt_obey es una opción explícita que puede respetar Disallow, Crawl-delay y Request-rate.

Panel de control futurista con cuatro paneles holográficos que representan un analizador HTML, un cliente HTTP, una máscara de navegador sigiloso y una red de araña, conectados a un núcleo central.

Cómo funciona

Instalación y elección del cliente

El núcleo de análisis se instala con pip install scrapling. Para clientes, arañas y navegadores, el README exige pip install "scrapling[fetchers]" y después scrapling install; para MCP, pip install "scrapling[ai]"; y para todo el conjunto, pip install "scrapling[all]". También publica imágenes pyd4vinci/scrapling en Docker Hub y ghcr.io/d4vinci/scrapling:latest.

El flujo documentado se divide así:

NecesidadInterfaz documentadaEjemplo de patrón
HTML ya disponibleSelectorSelector("<html>...</html>") → .css() o .xpath()
Petición HTTPFetcher o FetcherSessionFetcher.get(url)
Navegador dinámicoDynamicFetcher o DynamicSessionDynamicFetcher.fetch(url)
Navegador con opciones de sigiloStealthyFetcher o StealthySessionStealthyFetcher.fetch(url, headless=True)
RastreoSpiderdefinir start_urls y async def parse()

Las sesiones preservan cookies y estado; las arañas pueden registrar varias sesiones y dirigir una petición a una de ellas mediante sid. El modo de rastreo proporciona plantillas CrawlSpider, SitemapSpider y ShopifySpider; también incluye extracción de enlaces, puntos de control para reanudar, emisión progresiva con async for item in spider.stream() y exportación a JSON, JSONL, CSV o XML.

Selector adaptable, CLI e IA

El patrón central de adaptación es guardar una selección, por ejemplo page.css('.product', auto_save=True), y recuperarla más adelante con adaptive=True. Además de CSS y XPath, el analizador ofrece búsqueda por texto, expresiones regulares, filtros y navegación entre elementos relacionados.

Escáner de IA con retícula de neón bloqueando un elemento brillante dentro de un muro de código HTML que se reorganiza a sí mismo.

La CLI evita escribir código para una extracción simple:

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

El README documenta un servidor MCP integrado, activable con el extra ai, que prepara contenido seleccionado antes de entregarlo a un asistente, mantiene sesiones de navegador entre llamadas, captura pantallas y puede controlar un navegador remoto mediante CDP. También hay una habilidad de agente dentro de agent-skill/ para que los agentes de programación consulten la API actual de Scrapling.

Terminal futurista con texto verde neón ejecutando scrapling extract, con paneles holográficos que muestran integración con un asistente de IA y un servidor MCP.

Rendimiento: límites de la comparación

El repositorio publica su propio benchmarks.py. En su prueba de extracción de texto sobre 5.000 elementos anidados, declara 1,98 ms para Scrapling, 1,99 ms para Parsel/Scrapy, 2,48 ms para lxml y cifras mayores para PyQuery, Selectolax, MechanicalSoup y BeautifulSoup. En la prueba de similitud declara 2,29 ms para Scrapling y 12,46 ms para AutoScraper. Son promedios que el proyecto atribuye a más de 100 ejecuciones; no son una evaluación independiente ni sustituyen una prueba con la carga y las políticas del sitio de destino.

Dos velocímetros holográficos compitiendo en un escenario oscuro; uno con un icono de Python domina la carrera dejando atrás a los demás, sobre bloques de datos anidados.

Estado oficial y semioficial

El paquete scrapling se distribuye oficialmente por PyPI según los enlaces del README, y las imágenes que el proyecto dice generar en cada publicación se ofrecen desde Docker Hub y GitHub Container Registry. El mismo README enlaza una habilidad mantenida en el propio repositorio y el perfil D4Vinci/scrapling-official de Clawhub.

Esto acredita canales de distribución y una habilidad presentada por el mantenedor; no acredita que Python, Anthropic, OpenAI, Cloudflare, Playwright ni otro proveedor avalen la eficacia de Scrapling frente a sistemas antirobots. Tampoco se recuperó evidencia de que haya sido aceptado como extensión oficial de Claude Code, Cursor u otro mercado de un proveedor. La adopción en proyectos MCP y habilidades de terceros es, por tanto, semioficial o comunitaria, no una certificación del proveedor.

El ecosistema

Materiales y traducciones mantenidos por el proyecto

El README enlaza documentación en árabe, español, portugués de Brasil, francés, alemán, chino simplificado, japonés, ruso y coreano. Son traducciones alojadas en el árbol docs/ del repositorio principal; no son repositorios separados. También incluye agent-skill/, documentación en Read the Docs, el servidor MCP, una imagen Docker y un Discord del proyecto.

Como material directamente relacionado del mismo autor, la búsqueda de repositorios de D4Vinci devolvió D4Vinci/Scrapling-Arabic-Crash-Course (6 estrellas): se describe como los archivos de un curso en árabe sobre Scrapling. No se encontró en esa búsqueda un laboratorio de evaluaciones o un mercado hermano dedicado a Scrapling.

Globo digital brillante en un espacio oscuro, cubierto de nodos interconectados que representan documentación en varios idiomas y bifurcaciones de la comunidad.

Puertos, bifurcaciones y extensiones comunitarias

La búsqueda de GitHub y la lista de bifurcaciones recuperada permitieron verificar los siguientes proyectos. Las cifras son estrellas de la API de GitHub en la fecha de medición, no una garantía de mantenimiento, compatibilidad ni autorización del autor.

  • dorisoy/Scrapling — bifurcación traducida al chino, con 17 estrellas. Su descripción presenta en chino el selector adaptable, los clientes antirobots y las arañas; es la traducción comunitaria no inglesa más claramente identificable en los resultados recuperados.
  • Cedriccmh/claude-code-skill-scrapling — habilidad para Claude Code que declara elegir automáticamente un cliente de Scrapling y documentar patrones de sitios; 377 estrellas.
  • cyberchitta/scrapling-fetch-mcp — servidor MCP de terceros para que asistentes accedan a texto de sitios protegidos usando Scrapling; 106 estrellas.
  • sangamsharma/Scrapling-openclaw — bifurcación o adaptación para OpenClaw; 2 estrellas. Su baja cifra y la descripción casi idéntica al original no permiten afirmar soporte independiente sostenido.
  • Entre las bifurcaciones con mayor número de estrellas en la respuesta de la API figuran smirk-dev/Scrapling (6), ahmed-el-halawani/scrapling (5) y dmore/Scrapling-red-stealth-python (4). La API las marca como derivadas o las presenta con una descripción de Scrapling; no se recuperó documentación suficiente para tratarlas como alternativas mantenidas.

El ecosistema conecta asimismo con proyectos que la documentación nombra como referentes de API o de evaluación: Scrapy, Parsel, BeautifulSoup, lxml y Playwright. Esos nombres establecen compatibilidad, inspiración o comparación técnica en las fuentes recuperadas; no implican afiliación corporativa.

Números del repo

Medición: 3 de agosto de 2026, API de GitHub.

MétricaValor
Estrellas72.226
Bifurcaciones7.174
Suscriptores263
Commits1.560
Incidencias abiertas indicadas por la API6
Lenguaje principalPython
LicenciaBSD-3-Clause
Creación13 de octubre de 2024
Último envío de código30 de julio de 2026
Última actualización de metadatos3 de agosto de 2026
Última publicaciónv0.4.12, 26 de julio de 2026

El total de 1.560 commits procede del enlace de paginación final de la API de commits. Los contribuidores principales devueltos por la API son D4Vinci (Karim Shoair, 1.490 contribuciones), yetval (14), AbdullahY36 (10), mhillebrand (4), haosenwang1018 (4) y Bortlesboat (4). GitHub duplica el total de estrellas en watchers_count; por eso se informa subscribers_count como suscriptores reales. El campo open_issues_count puede incluir solicitudes de cambios abiertas, así que no equivale necesariamente a sólo incidencias.

Cómo contribuir

La guía CONTRIBUTING.md exige bifurcar el repositorio, clonar la bifurcación y trabajar desde dev; una solicitud contra main se rechaza. El flujo inicial documentado es:

git clone https://github.com/<usuario>/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

Las contribuciones de funciones deben incluir pruebas; las correcciones deben incluir código que reproduzca el fallo. La guía usa tox y CI de GitHub en las versiones de Python admitidas, además de mypy, pyright, ruff, bandit, vermin y mensajes de commit convencionales. Indica ejecutar pytest tests -n auto; para evitar conflictos de navegador, separa las pruebas no relacionadas con DynamicFetcher o StealthyFetcher de las pruebas de navegador secuenciales. También admite traducciones y plantillas de araña para plataformas con una estructura uniforme entre muchos dominios, pero no raspadores de un único sitio.

Cómo lo recibió la comunidad

La recepción externa verificable es limitada en Hacker News, pero los hilos de GitHub ofrecen ejemplos concretos de uso, problemas y correcciones:

  • En Hacker News, 41832425 fue publicado por d4vinci el 13 de octubre de 2024 y alcanzó 4 puntos y 1 comentario. Ese único comentario es del propio autor y presenta Scrapling como una biblioteca adaptable y de alto rendimiento; no es una reseña independiente. El segundo envío, 43852100, publicado por d4vinci el 30 de abril de 2025, obtuvo 1 punto y 0 comentarios. No se halló un debate amplio de Hacker News que permita inferir consenso.
  • En la incidencia #50, restlessronin agradeció el trabajo y explicó una utilidad práctica: obtener documentación de OpenAI que no lograba recuperar. Su objeción concreta fue que mensajes enviados a la salida estándar interferían con un servidor MCP basado en stdio. Finalmente indicó que mantendría una redirección de stdout mientras resolvía la integración; es elogio de un usuario, pero también evidencia de una fricción real de protocolo.
  • En #215, nuclei-masta reportó que, con ProxyRotator, el navegador no se abría y la araña terminaba con cero elementos. yetval identificó primero un conflicto de orden de resolución de métodos y después una fuga en el grupo de páginas de la rotación de proxies; abrió la solicitud de cambios #223. Tras la fusión, nuclei-masta respondió que funcionaba bien. El hilo ilustra una corrección colaborativa, no que la combinación estuviera libre de fallos antes del arreglo.
  • En #366, chcodex objetó que el servidor MCP no saneaba caracteres de control antes de serializar una respuesta y que recomendar la CLI local no resolvía un despliegue remoto de MCP. yetval propuso una corrección; chcodex verificó que pasó de un error de compatibilidad XML a una respuesta HTTP 200, y el mantenedor informó de su integración. Es una mejora comprobada por el reportante, aunque la incidencia revela que las integraciones MCP deben probarse con contenido real.

Scrapling frente a otras propuestas

PropuestaCoincidencia verificableDiferencia verificable
ScrapyLa API de Spider se documenta como similar a Scrapy y Scrapling ofrece integración mediante scrapling_response.Scrapling integra en el mismo README clientes HTTP, navegador, selector adaptable y sesiones; la fuente no permite concluir una superioridad general.
ParselAmbos aparecen en la comparación de rendimiento del analizador y utilizan selectores relacionados con CSS/XPath.Scrapling declara haber adaptado código de Parsel para su submódulo de traducción y añade clientes, arañas y adaptación de elementos.
BeautifulSoupEl analizador de Scrapling ofrece find_all con una forma semejante a BeautifulSoup.La fuente recuperada describe en Scrapling XPath, navegación de nodos, sesiones, arañas y navegadores, capacidades fuera de esa interfaz de análisis semejante.
AutoScraperAmbos aparecen en el banco interno de similitud de elementos.El README compara tiempo de localización adaptativa; no recuperamos una fuente que permita equiparar sus arquitecturas o resultados fuera de esa prueba del propio proyecto.
PlaywrightDynamicFetcher usa Playwright para Chromium y Chrome, y las sesiones admiten CDP remoto.Playwright figura como motor de automatización dentro de Scrapling; no es un competidor de nivel equivalente en la documentación recuperada.

Casos de uso y a quién puede ayudar este repositorio

  • Quien necesite extraer páginas que cambian con frecuencia puede guardar selectores y pedir recuperación adaptativa, siempre validando el resultado para evitar confundir un elemento similar con el dato esperado.
  • Equipos que alternan sitios estáticos, aplicaciones dinámicas y páginas con estado pueden empezar con Fetcher, subir a DynamicFetcher o StealthyFetcher y conservar cookies y estado con sesiones, sin cambiar de biblioteca de análisis.
  • Operaciones de rastreo de larga duración pueden usar Spider, límites por dominio, puntos de control, pausa y reanudación, emisión progresiva y exportadores integrados; el modo de desarrollo también permite reutilizar respuestas en disco al iterar sobre parse().
  • Desarrolladores que incorporan asistentes o automatización MCP pueden usar el servidor MCP y la habilidad de agente para entregar contenido seleccionado y mantener sesiones, pero deberían probar el transporte stdio, caracteres de control y la política del sitio, como muestran las incidencias #50 y #366.
  • Mantenedores que ya usan Scrapy pueden evaluar el decorador scrapling_response para analizar respuestas con el parser de Scrapling sin reescribir su araña completa.

Interfaz holográfica de un repositorio de GitHub con métricas de neón orbitando un núcleo central: un contador de "72.2K" estrellas y flujos de datos que representan 1.560 commits.

Recursos


Nota: este artículo combina el README, la guía de contribución y el historial de D4Vinci/Scrapling, la API de GitHub y la API de Hacker News consultados el 3 de agosto de 2026. Las cifras y el estado de los enlaces cambian con el tiempo.

Comentarios