Programa
Firecrawl es un nuevo tipo de rastreador web optimizado para flujos de trabajo de IA. Permite a los programadores extraer información de páginas, sitios web o incluso de toda la web. Es ideal para eliminar la complejidad del web scraping tradicional gracias a características como la compatibilidad con JavaScript, la conversión automática de markdown y la integración con los marcos LLM más populares.
En este artículo, no solo describiré las principales funciones de Firecrawl, sino que también citaré algunos consejos avanzados sobre su funcionamiento, su integración en el ecosistema y mencionaré algunas aplicaciones reales, para que puedas empezar a practicar por ti mismo.
¿Qué es Firecrawl?
Firecrawl es un rastreador web impulsado por IA desarrollado por Mendable.ai. Es un servicio API que rastrea sitios web y los convierte en datos limpios listos para LLM, como markdown, JSON, etc.
Se trata de un enfoque basado en inteligencia artificial que comprende el contexto de la página y extrae el contenido principal de forma inteligible, a diferencia de los scrapers tradicionales como BeautifulSoup o Puppeteer, que rastrean la web a ciegas y a menudo devuelven datos sucios. Es capaz de convertir sitios web completos en marcado limpio o datos estructurados, y es ideal para tareas de LLM.
Firecrawl tiene tres modos principales, que explicaré en detalle más adelante. Por lo general, el modo de raspado se utiliza para extraer una sola URL, el modo de rastreo para extraer todo un sitio web y el modo de mapa para descubrir URL.
Características principales de Firecrawl
Lo que distingue a Firecrawl es que no requiere ningún mapa del sitio, ya que cuenta con un mecanismo de navegación inteligente, maneja JavaScript pesado y contenido web dinámico, y su salida es un marcado limpio, HTML, JSON, capturas de pantalla y mucho más, lo que lo hace muy flexible de usar, tiene un proxy integrado, mecanismos antibot y de almacenamiento en caché, maneja el procesamiento por lotes y es concurrente para trabajos a gran escala, es extremadamente personalizable, ya que puedes excluir etiquetas, rastrear con encabezados personalizados, establecer la profundidad del rastreo y mucho más, se integra bien con marcos LLM como LangChain, LlamaIndex y CrewAI, y, por supuesto, es apto para empresas, ya que puedes establecer tu límite de velocidad, controles de concurrencia y fiabilidad.
Cómo configurar Firecrawl
Lo divertido de Firecrawl es que puedes configurarlo para que funcione muy rápido. Estos son los pasos principales que debes seguir para instalarlo en tu sistema:
Configuración de la clave API
- Regístrate en firecrawl.dev para obtener una clave API.
- Instala la biblioteca cliente Python:
pip install firecrawl
Y si estás utilizando langchain, utiliza
pip install firecrawl-py
- Almacena de forma segura la clave API utilizando variables de entorno:
import os
from firecrawl import FirecrawlApp
# Set your Firecrawl API key as an environment variable for security
api_key = os.getenv('FIRECRAWL_API_KEY')
# Create an instance of the FirecrawlApp class with your API key
app = FirecrawlApp(api_key=api_key)
Ejemplo básico de scraping
Puedes realizar tu primer scraping de forma sencilla utilizando el método « .scrape_url()
»:
response = app.scrape_url(url=example.com', formats=['markdown'])
print(response)
Este código recupera el contenido principal de la página web firecrawl.dev como un marcado.
Comprensión de los modos y puntos finales de Firecrawl
Firecrawl tiene tres modos principales que definen el alcance del rastreo. En esta sección, te explicaré cada uno de ellos.
Modo raspar
El modo «Scrape» (Raspear) se centra en direcciones URL individuales. Es ideal para extraer detalles de productos o artículos de noticias. El parámetro llm_extract
habilita la extracción basada en esquemas. Lo que debes hacer es definir el esquema que quieres que tenga tu JSON final, iniciar la configuración y comenzar a extraer datos:
from firecrawl import JsonConfig
from pydantic import BaseModel
# Define the expected data structure for the JSON extraction schema
class ExtractSchema(BaseModel):
company_mission: str
supports_sso: bool
is_open_source: bool
is_in_yc: bool
# Define the JSON configuration and set it to llm extraction mode
json_config = JsonConfig(
extractionSchema=ExtractSchema.model_json_schema(),
mode="llm-extraction",
pageOptions={"onlyMainContent": True}
)
# Scrape the URL, extract data, and format it into JSON
llm_extraction_result = app.scrape_url(
'https://firecrawl.dev',
formats=["json"],
json_options=json_config
)
print(llm_extraction_result)
Aquí tienes otro tipo de scraping de una sola URL, pero esta vez con extracción basada en selectores:
# Get a screenshot of the top of the overview page
scrape_result = app.scrape_url('firecrawl.dev',
formats=['markdown', 'html', "screenshot"],
actions=[
{"type": "wait", "milliseconds": 3000},
{"type": "click", "selector": "h1"},
{"type": "wait", "milliseconds": 3000},
{"type": "scrape"},
{"type": "screenshot"}
],
)
print(scrape_result)
Este script primero abre el sitio web, luego espera 3000 milisegundos, hace clic en el primer selector h1, espera de nuevo y, a continuación, extrae y guarda una captura de pantalla de la página actual. Si recibes errores de tiempo de espera, intenta aumentar los tiempos de espera junto con el parámetro de tiempo de espera.
Modo rastreo
El modo de rastreo te permite rastrear todo un sitio web, incluidas todas las subpáginas accesibles, sin necesidad de un mapa del sitio. Devuelve un ID de trabajo para realizar un seguimiento del progreso y admite la recuperación de metadatos cuando deseas obtener información adicional, como encabezados y marcas de tiempo, control de velocidad para limitar la velocidad a la que se accede al sitio y ajustes de profundidad recursiva para decidir cuántos niveles de enlaces seguir. Los pasos de un rastreador son los siguientes:
- En primer lugar, el rastreador abre la URL proporcionada.
- Lo raspa.
- Todos los hipervínculos que enlazan con subpáginas se analizan y se les asignan rastreadores independientes.
- Los pasos se repiten hasta alcanzar un máximo definido.
Aquí tienes un ejemplo de un rastreador que utiliza solicitudes Python:
import requests
url = "https://api.firecrawl.dev/v1/crawl"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
}
data = {
"url": "https://docs.firecrawl.dev", # site to crawl
"limit": 100, # max items
"scrapeOptions": {
"formats": ["markdown", "html"] # output formats
}
}
response = requests.post(url, headers=headers, json=data)
print(response.status_code)
print(response.json())
Este código le indica a Firecrawl que recupere hasta 100 páginas de https://docs.firecrawl.dev, devuelva cada página en Markdown y HTML, y luego imprima el resultado.
Si deseas obtener más información sobre las API, consulta nuestro curso Introducción a las API en Python, Trabajar con API en Python con código, y nuestro curso Dominar las API de Python: Tutorial «Guía completa para crear y utilizar API en Python».
Modo mapa
El mapa te permite introducir un sitio web y recuperar al instante todas las URL del sitio con gran rapidez. Por eso hemos creado /map
: Transforma una única URL en un mapa del sitio completo, lo que lo hace ideal cuando necesitas pedir a los usuarios finales que seleccionen enlaces para extraer, descubrir rápidamente todas las URL del sitio, centrarte en páginas relacionadas con un tema específico utilizando el parámetro de búsqueda o restringir el rastreo a páginas concretas.
Una consideración: Dado que este punto final da prioridad a la velocidad, es posible que no capture todos los enlaces.
# Map a website:
map_result = app.map_url('https://firecrawl.dev')
print(map_result)
Este código le indica a Firecrawl que descubra todos los enlaces de la página https://firecrawl.dev y te los muestre en una lista.
Aplicaciones reales de Firecrawl
Firecrawl es una herramienta versátil para una gran variedad de tareas, como hemos visto anteriormente, lo que la hace extremadamente útil en situaciones reales. Es muy útil para extraer información de bolsas de empleo o sitios web de noticias con el fin de recopilar listados o artículos actualizados para su análisis, o para entrenar tu modelo de machine learning de predicción. También puedes realizar análisis de opiniones a través de reseñas recopiladas, como recopilar opiniones de clientes de sitios web de comercio electrónico o de reseñas como Amazon, para analizar opiniones e informar las decisiones empresariales.
Esto se puede mejorar aún más con la supervisión de precios, como el seguimiento de los precios de los productos en múltiples plataformas para identificar tendencias o activar alertas en caso de bajadas de precios. Además, puedes utilizar Firecrawl para extraer documentación técnica con el fin de formar o informar a los agentes de IA, mejorando su base de conocimientos, o para la ingesta de datos en canalizaciones de IA multiagente, como lo hace CAMEL-AI.
También puede proporcionar datos web estructurados a sistemas de generación aumentada por recuperación (RAG) para mejorar el rendimiento del modelo y reducir sus niveles de alucinación.
Técnicas avanzadas y mejores prácticas
Para maximizar el potencial de Firecrawl, expongo algunas de las técnicas avanzadas y las mejores prácticas:
-
Extraiga datos estructurados para tu LLM utilizando el punto final
/extract
para devolver datos estructurados basados en un mensaje o un esquema, ya que los LLM gestionan mejor este tipo de datos que el HTML sin procesar. -
Gestiona los errores con reintentos implementando una lógica de reintento con retroceso exponencial para gestionar los errores transitorios de la API.
-
Optimiza el rendimiento utilizando el rastreo asíncrono de Firecrawl para iniciar rastreos de gran tamaño sin bloquear tu aplicación. Esto es ideal para aplicaciones o servicios web.
-
Filtra los rastreos con parámetros como
max_depth
oexclude
para limitar los rastreos a subdominios o tipos de páginas específicos. Esto ayudará a reducir los datos innecesarios según sea necesario. -
Utiliza herramientas de Python para validar y limpiar los datos rastreados, como equilibrarlos, eliminarvalores nulos y muchas otras cosas. pandas, numpy, seaborn y otras herramientas son muy útiles para estas tareas. Si deseas obtener más información sobre la limpieza de datos, considera nuestro curso sobre Limpieza de datos en Python.
Firecrawl contra Herramientas tradicionales para raspar
Firecrawl tiene numerosas ventajas que lo convierten en una de las mejores opciones en la mayoría de los casos y lo diferencian de las herramientas de scraping tradicionales como Scrapy, BeautifulSoup y Puppeteer. Maneja sin esfuerzo el contenido renderizado con JavaScript, mientras que herramientas como BeautifulSoup requieren herramientas adicionales como Selenium y, en ocasiones, una inspección manual. Cuenta con una función integrada de rotación de proxies y gestiona los límites de velocidad para reducir el tiempo de configuración en comparación con las configuraciones manuales de Scrapy, que requieren mucho tiempo. Además, las capacidades de extracción LLM de Firecrawl proporcionan datos estructurados, una característica que no suelen tener la mayoría de las herramientas tradicionales.
Sin embargo, las herramientas tradicionales pueden ser preferibles en casos específicos, como cuando se desea una ejecución local, lo que hace que herramientas como BeautifulSoup se ejecuten localmente sin dependencias de API, lo que resulta atractivo para los usuarios que evitan los servicios en la nube. La facilidad y la eficiencia de implementación a veces tienen un coste en forma de personalización extrema, como en el caso de Scrapy, que ofrece un control muy detallado para personalizar los procesos de scraping.
Integraciones y compatibilidad con el ecosistema
Firecrawl se integra bien con muchos de los marcos LLM más comunes y cuenta con un sólido ecosistema de soporte, lo que mejora su utilidad en los flujos de trabajo de IA. Puedes integrar LangChain utilizando el módulo FirecrawlLoader
, que permite integrar fácilmente datos web en los procesos de LangChain. O bien, puedes utilizarlo con LlamaIndex, ya que el motor de búsqueda de metadatos ( FirecrawlReader
) admite la carga de datos web para su indexación y consulta. Firecrawl también es una herramienta integrada para rastrear sitios web dentro del marco de CrewAI y es compatible con muchos otros marcos como Flowise, Dify y CAMEL-AI, con una amplia compatibilidad.
Planes de precios y límites de uso
Firecrawl ofrece una gama de planes de precios en función del caso de uso para adaptarse a diferentes necesidades. Asegúrate de consultar la página oficial de precios de Firecrawl, por si hubiera algún cambio.
- Nivel gratuito: Incluye un número limitado de créditos y es adecuado para pruebas y proyectos pequeños.
- Nivel de afición: Ofrece más créditos para personas individuales o equipos pequeños a un bajo coste.
- Niveles Estándar, Crecimiento y Empresa: Ofrece créditos adicionales, límites de tarifa más altos y funciones avanzadas, como solicitudes personalizadas por minuto (RPM).
El sistema de créditos funciona de la siguiente manera:
Plan |
Créditos |
Características |
Ideal para |
Gratis |
Limitado |
Raspado básico, pruebas |
Principiantes, proyectos pequeños |
Hobby |
Moderado |
Más créditos, características estándar |
Programadores individuales |
Normas |
Alto |
Límites de tarifa más altos, funciones avanzadas |
Equipos en crecimiento |
Crecimiento |
Muy alto |
Opciones personalizadas y escalables |
Proyectos grandes |
Empresa |
Ilimitado |
RPM personalizado, asistencia dedicada |
Uso empresarial de gran volumen |
Conclusión
Firecrawl supone un cambio revolucionario en la extracción de datos web, especialmente para aplicaciones de IA. Al convertir los sitios web en datos limpios, estructurados y preparados para LLM, ayuda a los programadores a crear de forma más inteligente. Su facilidad de uso, su amplio conjunto de funciones y sus numerosas integraciones lo convierten en la mejor opción para tareas que van desde la supervisión de precios hasta los flujos de trabajo RAG.
Te animo a que explores la versión gratuita de Firecrawl para probar sus capacidades. Mantente conectado con la comunidad en Firecrawl GitHub y Discord para recibir actualizaciones, consejos y asistencia.
Con Firecrawl, los datos web ya no son un reto. Es un potente activo para tus innovaciones en IA.
Como siguiente paso, te recomiendo el siguiente curso y código para practicar:
Trabajo en sistemas de IA acelerados que permiten la inteligencia de vanguardia con canalizaciones de ML federadas en datos descentralizados y cargas de trabajo distribuidas. Mywork se centra en Grandes Modelos, Procesamiento del Habla, Visión por Ordenador, Aprendizaje por Refuerzo y Topologías ML avanzadas.