21 puntos por GN⁺ 2024-07-11 | 2 comentarios | Compartir por WhatsApp
  • Crawlee es una biblioteca de Python para web scraping y automatización de navegadores
  • Ayuda a construir rápidamente crawlers confiables
  • Puede usarse para extraer datos para AI, LLM, RAG y GPT
  • Permite descargar archivos como HTML, PDF, JPG y PNG desde sitios web
  • Funciona junto con BeautifulSoup, Playwright y HTTP puro
  • Soporta tanto el modo Headful como el modo Headless
  • Ofrece rotación de proxies

Características

  • Proporciona una interfaz unificada para crawling HTTP y de navegadores Headless
  • Realiza crawling paralelo automático según los recursos del sistema disponibles
  • Está escrita en Python con type hints, lo que mejora el autocompletado en el IDE y reduce errores
  • Reintenta automáticamente cuando ocurre un error o cuando hay bloqueo
  • Incluye rotación de proxies y gestión de sesiones integradas
  • Enrutamiento de solicitudes configurable: dirige las URL directamente al handler adecuado
  • Cola persistente para las URL que se van a rastrear
  • Almacenamiento enchufable tanto para datos tabulares como para archivos
  • Potentes capacidades de manejo de errores

Diferencias frente a Scrapy

  • Crawlee soporta por defecto el crawling con navegadores Headless (Playwright)
  • Interfaz simple y elegante: permite configurar un scraper con menos de 10 líneas de código
  • Aplicación completa de type hints
  • Basado en Asyncio estándar

Opinión de GN⁺

  • Crawlee parece una herramienta potente para web scraping y crawling. En especial, su soporte nativo para crawling basado en navegadores Headless parece una gran ventaja.
  • Su interfaz simple y la poca cantidad de código necesaria para crear un crawler hacen que se vea muy productiva. Además, el uso activo de type hints mejora la experiencia de desarrollo y reduce la posibilidad de errores.
  • Si tienes un proyecto que necesita crawling para extracción de datos, vale la pena considerar seriamente a Crawlee. En particular, si necesitas rastrear páginas web que requieren renderizado de JavaScript, PlaywrightCrawler parece ser muy útil.
  • Sin embargo, si necesitas crawling a muy gran escala o la inmediatez es crítica, podría ser mejor usar Scrapy u otra herramienta con soporte para crawling distribuido.
  • También parece recomendable revisar suficientemente las políticas de crawling y los temas legales antes de usarla.

2 comentarios

 
yangeok 2024-07-15

Sabía que era compatible con Node, pero parece que también soporta Python. Si es un scraper que va a requerir mantenimiento, creo que habría que considerar seriamente un framework jaja

 
GN⁺ 2024-07-11
Opiniones en Hacker News
  • Es importante documentar las funciones existentes. Por muy excelente que sea una plataforma de web scraping, no sirve de mucho si solo sus autores la entienden

    • Por ejemplo, es difícil entender el significado de tiered_proxy_urls: list[list[str]] | None = None
    • Los ejemplos deberían mostrar cómo encontrar y descargar todos los datos, incluidas tablas .csv y .xlsx
    • Cualquiera puede simplemente obtener texto y buscar URLs
    • Se necesitan ejemplos de cómo parsear 1000 elementos distintos y obtener de 3 a 5 elementos a través de distintos endpoints
    • No queda claro si esta herramienta es un framework o una herramienta de automatización
    • Me pregunto si soporta protocolos de exclusión para web scraping (por ejemplo, robots.txt, HTTP y etiquetas de contenido). Esto se volvió especialmente importante después de la directiva DSM de la UE
  • Gracias a Apify/Crawlee. Como usuario de Node.js desde hace mucho tiempo, esta biblioteca ha sido la que mejor me ha funcionado

  • Descubrí Crawlee mientras buscaba un stack para un proyecto. Quería una biblioteca de Python, pero usé Crawlee con Typescript y terminé el proyecto en una semana

    • La API es mucho mejor que cualquier API de scraping en Python que haya usado hasta ahora
    • La integración con Playwright hace que la experiencia de programación sea muy cómoda
    • Funciona bien para sitios web renderizados en frontend y para capturar respuestas XHR modificadas
    • Planeo escalar usando la plataforma de Apify
  • Me pregunto en qué se diferencia de Scrapy

  • Me pregunto cuál sería la razón para cambiar desde otras bibliotecas. Construí mi propio crawler, pero no encontré nada particularmente único

  • El código Python moderno se ve genial

    • En el código de ejemplo, const data = await crawler.get_data() parece Javascript. Da la impresión de que falta un guion bajo
  • Sugiero llevar más fragmentos de código de los casos de prueba a los ejemplos de la documentación. Buen trabajo

  • Las herramientas de scraping siempre son bienvenidas. Pienso probarla en un proyecto personal. Gracias a la IA, el scraping actual se parece a vender palas en una fiebre del oro