Una guía de codificación para la extracción de datos web asincrónicos utilizando Crawl4ai: un kit de herramientas de rastreo web y raspado de código abierto diseñado para flujos de trabajo LLM

En este tutorial, demostramos cómo aprovechar Rastreo 4aiun moderno kit de herramientas de rastreo web basado en pitón, para extraer datos estructurados de páginas web directamente dentro de Google Colab. Aprovechando el poder de Asyncio para la E/S asíncrona, HTTPX para las solicitudes HTTP y el ASYNCHTTPCrawlerRategy empotrado de Crawl4ai, evitamos la sobrecarga de los navegadores sin cabeza mientras seguimos analizando HTML complejo a través de JSONCSSEXTRACTIONTRACTIONGY. Con solo unas pocas líneas de código, usted instala dependencias (Crawl4ai, Httpx), configure HttpcrawlerConfig para solicitar solo GZIP/Deflate (evitando problemas de Brotli), defina su esquema CSS -Json y orquesta el rastreo a través de Asyncwebcrawler y GrawlerRunconfig. Finalmente, los datos JSON extraídos se cargan en pandas para un análisis inmediato o exportación.

Lo que distingue a Crawl4ai es su API unificada, que cambia perfectamente entre las estrategias basadas en el navegador (dramaturgo) y solo HTTP, sus robustos ganchos de manejo de errores y sus esquemas de extracción declarativa. A diferencia de los flujos de trabajo tradicionales de navegador sin cabeza, Crawl4ai le permite elegir el backend más liviano y perfilante, lo que lo hace ideal para tuberías de datos escalables, ETL sobre las cosas en cuadernos o herramientas de análisis de LLMS y análisis con salidas JSON/CSV limpias.

!pip install -U crawl4ai httpx

Primero, instalamos (o actualizamos) Crawl4ai, el marco de rastreo asíncrono central, junto con HTTPX. Este cliente HTTP de alto rendimiento proporciona todos los bloques de construcción que necesitamos para raspar la web liviano y asíncrono directamente en Colab.

import asyncio, json, pandas as pd
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, HTTPCrawlerConfig
from crawl4ai.async_crawler_strategy import AsyncHTTPCrawlerStrategy
from crawl4ai.extraction_strategy import JsonCssExtractionStrategy

We bring in Python’s core async and data‑handling modules, asyncio for concurrency, json for parsing, and pandas for tabular storage, alongside Crawl4AI’s essentials: AsyncWebCrawler to drive the crawl, CrawlerRunConfig and HTTPCrawlerConfig to configure extraction and HTTP settings, AsyncHTTPCrawlerStrategy for a Backend HTTP libre de navegador y JSONCSSEXTRACTIONTRATY para asignar selectores CSS en JSON estructurado.

http_cfg = HTTPCrawlerConfig(
    method="GET",
    headers={
        "User-Agent":      "crawl4ai-bot/1.0",
        "Accept-Encoding": "gzip, deflate"
    },
    follow_redirects=True,
    verify_ssl=True
)
crawler_strategy = AsyncHTTPCrawlerStrategy(browser_config=http_cfg)

Aquí, instanciamos un httpcrawlerconfig para definir el comportamiento de nuestro rastreador HTTP, utilizando una solicitud GET con un agente de usuario personalizado, codificación GZIP/Deflazó solo, redireccionamientos automáticos y verificación SSL. Luego lo conectamos a AsynchttpCrawlerStrategy, permitiendo que Crawl4ai conduzca el rastreo a través de llamadas HTTP puras en lugar de un navegador completo.

schema = {
    "name": "Quotes",
    "baseSelector": "div.quote",
    "fields": [
        {"name": "quote",  "selector": "span.text",      "type": "text"},
        {"name": "author", "selector": "small.author",   "type": "text"},
        {"name": "tags",   "selector": "div.tags a.tag", "type": "text"}
    ]
}
extraction_strategy = JsonCssExtractionStrategy(schema, verbose=False)
run_cfg = CrawlerRunConfig(extraction_strategy=extraction_strategy)

Definimos un esquema de extracción JSON – CSS dirigido a cada bloque de cotizaciones (Div.quote) y sus elementos infantiles (SPAN.Text, Small.Author, Div.tags a.tag), luego inicializa un JSONCSSEXTractionStrategy con ese esquema, y ​​lo envuelve en un CrawlerRunconfig que consulta exactamente lo que los datos estructurados para atraer cada solicitud en cada solicitud.

async def crawl_quotes_http(max_pages=5):
    all_items = []
    async with AsyncWebCrawler(crawler_strategy=crawler_strategy) as crawler:
        for p in range(1, max_pages+1):
            url = f"https://quotes.toscrape.com/page/{p}/"
            try:
                res = await crawler.arun(url=url, config=run_cfg)
            except Exception as e:
                print(f"❌ Page {p} failed outright: {e}")
                continue


            if not res.extracted_content:
                print(f"❌ Page {p} returned no content, skipping")
                continue


            try:
                items = json.loads(res.extracted_content)
            except Exception as e:
                print(f"❌ Page {p} JSON‑parse error: {e}")
                continue


            print(f"✅ Page {p}: {len(items)} quotes")
            all_items.extend(items)


    return pd.DataFrame(all_items)

Ahora, esta función asíncrona orquesta el rastreo http -solo: gira un asyncwebcrawler con nuestro asynchttpcrawlerStrategy, itera a través de cada url de página y espera de forma segura crawler.arun (), maneja cualquier solicitud o errores de pars de JSON y recopila los registros de citas extraídos en un solo datos de pandas de pandas para el análisis de los datos de los pandas.

df = asyncio.get_event_loop().run_until_complete(crawl_quotes_http(max_pages=3))
df.head()

Finalmente, iniciamos el Coroutine Crawl_quotes_HTTP en el bucle Asyncio existente de Colab, obteniendo tres páginas de citas y luego mostramos las primeras filas del marco de datos PANDAS resultante para verificar que nuestro rastreador devolvió los datos estructurados como se esperaba.

En conclusión, al combinar el entorno con config cero de Google Colab con el ecosistema asíncrono de Python y las estrategias de rastreo flexibles de Crawl4ai, ahora hemos desarrollado una tubería totalmente automatizada para raspar y estructurar datos web en minutos. Ya sea que necesite girar un conjunto de datos rápido de citas, construir un archivo de archivos de noticias refrescable o alimentar un TRAPO El flujo de trabajo, la mezcla de HTTPX, Asyncio, JSONCSSEXTRACTIONSTRATY y AsynchttpCrawlerStrategy asynchtttpCrawlerStrategy ofrecen simplicidad y escalabilidad. Más allá de los rastreos HTTP puros, puede pivotar instantáneamente a la automatización del navegador impulsado por los dramaturgos sin reescribir su lógica de extracción, lo que subraya por qué Crawl4ai se destaca como el marco de Go -to para la extracción moderna de datos web listos para la producción.


Aquí está el Cuaderno de colab. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 90k+ ml de subreddit.

🔥 [Register Now] Conferencia virtual de Minicon sobre AI agente: registro gratuito + Certificado de asistencia + Evento corto de 4 horas (21 de mayo, 9 am- 1 pm PST) + Hands on Workshop


Nikhil es consultor interno en MarktechPost. Está buscando un doble grado integrado en materiales en el Instituto Indio de Tecnología, Kharagpur. Nikhil es un entusiasta de AI/ML que siempre está investigando aplicaciones en campos como biomateriales y ciencias biomédicas. Con una sólida experiencia en la ciencia material, está explorando nuevos avances y creando oportunidades para contribuir.