- Evade la estructura compleja de la web moderna y los sistemas anti-bot y maneja desde una sola solicitud hasta rastreo a gran escala
- Incluye un parser inteligente que vuelve a localizar automáticamente los elementos cuando cambia la estructura del sitio web
- Incluye un módulo Fetcher que evade de forma predeterminada sistemas de seguridad importantes como Cloudflare Turnstile
- Compatible con funciones de rastreo a gran escala como concurrencia, gestión de sesiones, pausa/reanudación y rotación de proxies mediante el framework Spider
- API similar a Scrapy: usa
start_urls, callbacks parse asíncronos y objetos Request/Response
- Rastreo concurrente y separación de sesiones: permite ejecutar varias sesiones de navegador en paralelo
- Función de pausa y reanudación basada en checkpoints: estable incluso en rastreos de larga duración
- Modo de streaming en tiempo real: permite procesar los datos recopilados de inmediato o reflejarlos en una UI
- Detecta automáticamente las solicitudes bloqueadas y permite reintentos con lógica personalizada
- Permite exportar resultados a tu propio pipeline usando hooks (JSON/JSONL)
- Fetching avanzado de sitios web con soporte de sesión
- La clase Fetcher admite funciones avanzadas de solicitud como HTTP/3, falsificación de huella TLS y camuflaje de encabezados
- Con DynamicFetcher realiza automatización de navegador basada en Playwright/Chrome
- StealthyFetcher evade automáticamente defensas anti-bot como Cloudflare Turnstile
- Con ProxyRotator permite cambiar proxies por solicitud y controlar bloqueos por dominio
- Todos los Fetcher funcionan de forma asíncrona (async) y ofrecen clases de sesión (
FetcherSession, DynamicSession, etc.)
- Con scraping adaptativo (Adaptive Scraping) vuelve a localizar automáticamente los elementos incluso después de cambios en el sitio web
- Algoritmo de seguimiento de elementos basado en similitud: permite recopilar datos de forma resistente a cambios estructurales
- Compatible con selectores basados en CSS/XPath/texto/expresiones regulares
- Incluye un servidor MCP para integración con IA: funciona con Claude, Cursor, etc. para extracción de datos asistida por IA
- Antes de llamar a la IA, Scrapling selecciona el contenido objetivo para reducir el uso de tokens y mejorar la velocidad
- Arquitectura de alto rendimiento
- Ofrece una velocidad de procesamiento superior a la de la mayoría de las librerías de scraping en Python
- Ejecución ligera gracias a una estructura eficiente en memoria y carga diferida (lazy loading)
- Velocidad de serialización JSON 10 veces mayor, 92% de cobertura de pruebas y type hints estáticos completos
- Probado en producción (battle-tested) por múltiples comunidades de web scraping
- Ofrece una experiencia amigable para desarrolladores y web scrapers
- Incluye una Web Scraping Shell interactiva: basada en IPython, admite exploración en tiempo real y transformación de solicitudes
- Mediante comandos CLI permite hacer scraping de URLs y extraer archivos sin escribir código
- La API de exploración del DOM permite recorrer relaciones padre/hermano/hijo y buscar elementos similares
- Un generador automático de selectores crea selectores CSS/XPath estables automáticamente
- API similar a Scrapy/BeautifulSoup: ofrece una experiencia de desarrollo familiar para usuarios existentes
- También mejora la facilidad de despliegue con análisis estático basado en PyRight/MyPy y compilación automática de imágenes Docker
- Benchmarks de rendimiento
- El parser de Scrapling es ligeramente más rápido que Parsel/Scrapy,
y registra una velocidad de procesamiento hasta más de 700 veces superior frente a BeautifulSoup4 (bs4)
- El rendimiento de búsqueda por similitud de elementos también logra resultados más de 5 veces más rápidos que AutoScraper
- Se puede instalar con
pip install scrapling o
ofrece una imagen Docker para configurar un entorno de ejecución completo con navegador incluido: docker pull pyd4vinci/scrapling
- Licencia BSD-3-Clause
3 comentarios
¿Legalmente no hay problema??? Creo haber visto que decían que no había problema con obtener información en línea... Me da curiosidad si no habría perjuicio al eludir lo que el sitio bloquea para impedir el crawling y leerlo de todos modos.
¿O lo riesgoso es solo el contenido que se consulta después de iniciar sesión?
> with FetcherSession(impersonate='chrome') as session: # Use latest version of Chrome's TLS fingerprint
Qué interesante. Siempre lo buscaba y lo metía manualmente, pero es la primera vez que veo una librería así. Parece que sería cómodo.
Pero me da curiosidad cómo se supone que evita Cloudflare. Creo que habría que ver el código para saberlo.