Crawl4AI — crawling web LLM-friendly
⚠️ Corrección 2026-09-05 (auditoría): la clase
CrawlerStrategyNO existe yresult.markdownes un objeto, no un string. API real =BrowserConfig/CrawlerRunConfig+ strategiesJsonCssExtractionStrategy/LLMExtractionStrategy.
Repo: https://github.com/unclecode/crawl4ai (Python, ~81K⭐).
When to Use
- Cuando pidas crawling LLM-friendly: extraer contenido de una web en markdown/JSON listo para meter en un LLM.
Uso (API real)
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode, JsonCssExtractionStrategy, LLMExtractionStrategy
async with AsyncWebCrawler() as crawler:
result = await crawler.arun("https://ejemplo.com", config=CrawlerRunConfig(cache_mode=CacheMode.BYPASS))
md = result.markdown.raw_markdown # markdown es un OBJETO con .raw_markdown / .fit_markdown
print(md[:500])
Extracción estructurada:
schema = {...}
strategy = JsonCssExtractionStrategy(schema, verbose=True) # o LLMExtractionStrategy(...)
Pitfalls
- No existe
CrawlerStrategy— usaJsonCssExtractionStrategy/LLMExtractionStrategy. result.markdownes un objeto:.raw_markdown/.fit_markdown, no[:500]a secas.- El core es
AsyncWebCrawler+CrawlerRunConfig(oBrowserConfig).
Verificación
await crawler.arun(url)y leerresult.markdown.raw_markdown. Para extracción con schema,JsonCssExtractionStrategy.