00:00:00Cuando necesitas un scraper para RAG, el problema no es obtener los datos,
00:00:03sino limpiarlos.
00:00:04JavaScript rompe las cosas, el HTML es un caos,
00:00:07y perdemos tiempo intentando que sean útiles para el LLM.
00:00:11La solución a esto es CrawlForAI.
00:00:13Está diseñado para IA, cuenta con funciones asíncronas,
00:00:15maneja JavaScript y genera Markdown o JSON limpio,
00:00:18y corre hasta seis veces más rápido que los scrapers tradicionales de Python como Scrapy.
00:00:23Obtenemos datos listos para el modelo más rápido que nunca.
00:00:26¿Cómo funciona? ¿En qué se diferencia?
00:00:29Estas son las preguntas.
00:00:30[MÚSICA]
00:00:35Entonces, ¿qué es CrawlForAI realmente?
00:00:37Al principio parece otro crawler de Python más,
00:00:40pero no está hecho para el scraping convencional, sino para la IA.
00:00:43Aquí está la diferencia.
00:00:44La mayoría de los crawlers nos dan HTML puro,
00:00:46CrawlForAI nos da Markdown limpio o JSON estructurado listo para un LLM.
00:00:52Maneja JavaScript usando Playwright,
00:00:54funciona de forma asíncrona para que realmente pueda escalar,
00:00:57y tiene el modo “prefetch” que omite el renderizado pesado cuando solo necesitas los enlaces.
00:01:01Ahora, esto importa porque si estamos construyendo chatbots,
00:01:04asistentes o estos agentes, nuestro problema no es el rastreo,
00:01:08sino convertir esos datos desordenados de la web en datos utilizables.
00:01:11CrawlForAI elimina este problema por completo y de forma rápida.
00:01:15Si te gusta este tipo de contenido, asegúrate de suscribirte.
00:01:18Publicamos vídeos constantemente.
00:01:20Empecemos por lo sencillo. Aquí está el rastreo más básico que preparé.
00:01:23Mucho de esto lo saqué de su repositorio y documentación,
00:01:25y solo retoqué un par de líneas para que funcionara.
00:01:28Importé AsyncWebCrawler, que gestiona peticiones web asíncronas para flujos de IA.
00:01:34Luego llamo a “run” en una URL de noticias tecnológicas, y listo.
00:01:38Ahora mira este resultado.
00:01:40No es HTML en bruto lo que recibimos,
00:01:43es Markdown limpio, es JSON impecable.
00:01:45Encabezados estructurados, enlaces preservados,
00:01:47y por debajo de todo, recupera la página,
00:01:50analiza el DOM, elimina el ruido,
00:01:52y clasifica el contenido para que nos quedemos con lo importante sin toda esa paja extra.
00:01:57Si necesitamos crear un resumidor de noticias o un prototipo de RAG,
00:02:02no tenemos que escribir scripts de limpieza,
00:02:04simplemente pasamos esto directamente al modelo.
00:02:07Esperábamos un scraping convencional, al menos yo lo hice, como con cualquier otra herramienta,
00:02:11pero lo que obtuvimos son datos que ya están preparados para nosotros.
00:02:14Esa diferencia es tiempo ahorrado.
00:02:17Y la cosa se pone aún más interesante a partir de aquí.
00:02:19Mientras experimentaba con la herramienta,
00:02:20me di cuenta de que podrías pensar que renderizar cada página es necesario.
00:02:23Pero no es así. Mira esto.
00:02:25Es el mismo crawler,
00:02:27pero ahora configuramos “prefetch” como true.
00:02:30Voy a probar con Hacker News.
00:02:31¿Ves qué rápido corre?
00:02:33Fue realmente increíble la velocidad a la que funcionó.
00:02:35En lugar de renderizar cada página,
00:02:37primero extrae los enlaces,
00:02:38mediante una simple descarga asíncrona.
00:02:39Si estás creando un agregador, esto es genial.
00:02:42Primero encontramos lo que necesitamos,
00:02:44y luego podemos extraerlo más tarde.
00:02:45No lo rastreas todo,
00:02:47solo lo que nos interesa.
00:02:48Esa diferencia de escala se nota cuando manejas
00:02:50cientos o miles de URLs.
00:02:52Ahora hablemos un poco más sobre la parte de producción.
00:02:55Voy a ejecutar un rastreo profundo usando la estrategia BFS deep crawl.
00:02:58Esta es su versión del enfoque de búsqueda en anchura.
00:03:01Después defino el estado de reanudación justo aquí,
00:03:03y añado un callback para el cambio de estado.
00:03:07Voy a iniciar el rastreo,
00:03:08y luego voy a forzar el cierre del proceso.
00:03:10La mayoría de las herramientas, cuando cierras el proceso,
00:03:13tienen que empezar de cero.
00:03:14Pero cuando vuelvo a ejecutarlo, mira esto,
00:03:16se reinicia usando el estado JSON guardado,
00:03:19y continúa exactamente donde se quedó sin perder nada.
00:03:22Así que al construir una gran base de conocimientos para RAG,
00:03:24un fallo del sistema no es solo una molestia.
00:03:26Normalmente, es simplemente costoso.
00:03:29Pero aquí, se retoma el trabajo.
00:03:30Ahora, lo que la mayoría de los scrapers no pueden hacer: extracción semántica.
00:03:35Si defino un esquema usando Pydantic,
00:03:37con puesto de trabajo, empresa y salario,
00:03:39voy a extraer datos de Indeed.
00:03:40Luego configuro su estrategia de extracción con LLM
00:03:44con una instrucción y un proveedor.
00:03:46Lo ejecuto en Indeed,
00:03:48el sitio de búsqueda de empleo,
00:03:49y mira este resultado.
00:03:51Es realmente bueno, la verdad.
00:03:52Un JSON estructurado con campos limpios,
00:03:54y esto es lo que está pasando.
00:03:56CrawlForAI convierte la página,
00:03:58como dije, a Markdown o JSON, tú eliges.
00:04:01Luego se lo envía a un modelo.
00:04:03El modelo lo estructura basándose en tu esquema.
00:04:06No está raspando texto por raspar,
00:04:07solo extrae lo que queremos.
00:04:09El LLM ahora puede manejar esto.
00:04:11Eso es un nivel de capacidad completamente distinto para herramientas tipo LLM.
00:04:15Esto está genial,
00:04:16pero alejémonos un segundo para ver el panorama general.
00:04:18Las ventajas: es rápido.
00:04:20Es muy rápido, hasta seis veces más en las pruebas de rendimiento.
00:04:22Maneja JavaScript automáticamente.
00:04:24Es asíncrono y escalable,
00:04:26y se reanuda tras errores.
00:04:28Pero lo más destacado,
00:04:29es que integra LLMs directamente.
00:04:32Además, es de código abierto.
00:04:33Solo tuve que hacer un pip install y ya estaba funcionando.
00:04:35Ahora bien, como con todo,
00:04:36hay ciertas concesiones.
00:04:38Es solo para Python, ¿verdad?
00:04:39Puede que uses Python o puede que no.
00:04:41Eso podría ser un inconveniente.
00:04:42Las funciones de LLM requieren claves de API, a menos que uses modelos locales como Ollama.
00:04:46Hacer crawling sigue pudiendo chocar con límites de velocidad,
00:04:49y como cualquier proyecto de código abierto que avanza rápido,
00:04:51tienes que mantenerlo actualizado.
00:04:53Se están publicando actualizaciones constantemente.
00:04:54Pero para desarrolladores centrados en IA,
00:04:56elimina muchos puntos de fricción,
00:04:58especialmente en estos flujos de RAG.
00:05:00Ahora, comparémoslo con lo que quizás ya estés usando.
00:05:03Scrapy, si vienes de Python.
00:05:05Es genial para rastreos estáticos masivos,
00:05:07pero se basa en reglas y requiere mucho código repetitivo.
00:05:10Sinceramente, lleva mucho tiempo configurarlo.
00:05:13Si quieres extracción con LLM sobre una salida de Markdown,
00:05:16tienes que construir capas personalizadas.
00:05:17Con CrawlForAI, eso ya viene incluido.
00:05:19Tienes Beautiful Soup.
00:05:21Es muy ligero, demasiado simple,
00:05:23pero en realidad es solo un analizador sintáctico.
00:05:25No hay un motor de rastreo,
00:05:26ni renderizado de JavaScript.
00:05:28Acabarás juntando un montón de piezas sueltas.
00:05:31Luego, por supuesto, está el gran Selenium.
00:05:33Renderiza JavaScript, claro.
00:05:36Pero es más lento y más manual.
00:05:38Escalar flujos de trabajo asíncronos seguirá siendo un dolor de cabeza.
00:05:42CrawlForAI envuelve Playwright internamente
00:05:44y expone una API asíncrona clara.
00:05:46Si estás creando rastreadores tradicionales basados en reglas
00:05:48para datos estáticos,
00:05:49tus herramientas actuales te irán perfectamente bien.
00:05:52Pero si estás construyendo sistemas de IA,
00:05:54pipelines de RAG o agentes autónomos,
00:05:56CrawlForAI está hecho a medida para ese mundo,
00:06:00y es una herramienta de IA realmente genial.
00:06:02No solo rastrea páginas, prepara los datos,
00:06:04prepara lo que el LLM necesita.
00:06:06Así que eso es CrawlForAI.
00:06:08Si te interesa la IA, probablemente valga la pena echarle un vistazo.
00:06:11Fue superrápido, me sorprendió de verdad.
00:06:14Y es genial que,
00:06:15si estamos construyendo estos flujos estilo RAG,
00:06:17podamos pasar esos datos limpiamente a nuestros LLMs.
00:06:20Nos vemos en otro vídeo.