Sin duda el scraping va a crecer impulsado por la IA
Ahora todos los agentes IA necesitan una base del conocimiento para responder de forma precisa, justo eso es lo que se consigue con un scrapeo a una web con contenido de calidad.
Busca un buen contenido, extrae el contenido y usalo como base del conocimiento para tus agentes de asistencia IA.
Te explico como hacerlo…
Texto del vídeo:
Hoy vamos a scrapear con IA. Vamos a sacar toda la información que necesitamos de una tienda, en este caso de shop Ezoco. Para eso vamos a utilizar una librería que está ahora cogiendo mucha fuerza porque saca el contenido ayudándose de la inteligencia artificial. Esta es la librería: «Crawl for AI».
Empezamos por indicarle un esquema dónde está contenida la información en la web. A continuación, configuramos un modelo «Deep Seek» con su «API key» y le añadimos el prompt.
En las instrucciones le decimos qué es exactamente lo que queremos que extraiga. En el filtro le ponemos también los tokens que queremos que use y a continuación le pedimos que saque la información utilizando ese filtro.
Definida la estrategia de estracción de contenido y establecido filtro que hemos hecho con la IA, comenzamos la extracción y filtrado indicando la url de la página web que contiene la información.
Vamos a ver de dónde sacamos esta información. Primero tenemos que ver dónde están contenidas las fichas de los productos. Hemos visto que la ficha está en una etiqueta li, el nombre del producto en un h2, el precio en una etiqueta span y el enlace al producto en una etiqueta a. ¿De dónde hemos
sacado esto? Bueno, pues nos vamos a la tienda, le damos al botón derecho, inspeccionar, le damos a la flechita y vemos dónde está la información de cada uno de los productos, es decir, en qué etiquetas se guarda la información que necesitamos. Aquí la tengo ya. Como vemos la información de cada producto está dentro de una etiqueta «li» y dentro de ese de ese li tenemos, el contenido en el enlace, tenemos el h2 y tenemos el precio en un span clase «price». Pues eso es justo lo que hemos indicado en nuestro código. Hemos indicado que está en un h2 y le hemos puesto la clase CSS h2 para que la encuentre con más facilidad. Le hemos dicho que el precio está en un span con clase price y por último la etiqueta a, que está en esta clase.
Ejecutamos.
Hace el crawleo.
Ahora con el modelo LLM elegido, está dividiendo toda la información en pequeños cortes para manejar mejor el contenido. En este caso como es poca información, lo está haciendo en un solo corte.
Y aquí ya tenemos el contenido con lo que le hemos pedido: el producto, los precios y el enlace.
Impresionante.
La verdad es que «crawl for ai» ofrece muchas más posibilidades. Te Aconsejo explorarla un poco para ver cómo funciona la combinación de scrapear y la inteligencia artificial. Sin duda el futuro de los asistentes con IA.
Nada más por ahora. Nos vemos. Saludos.
Código:
from crawl4ai import AsyncWebCrawler, LLMConfig, LLMContentFilter, DefaultMarkdownGenerator, CrawlerRunConfig, CacheMode
from crawl4ai.extraction_strategy import JsonCssExtractionStrategy
import config
# Schema modificado para capturar más contenido
schema = {
"name": "Articles",
"baseSelector": "li",
"fields": [
{"name": "Productos", "selector": "h2.woocommerce-loop-product__title", "type": "text"},
{"name": "Precios", "selector": "span.price", "type": "text"},
{"name": "link", "selector": "a.woocommerce-LoopProduct-link.woocommerce-loop-product__link", "type": "attribute", "attribute": "href"},
]
}
estrategia = JsonCssExtractionStrategy(schema)
deep_config = LLMConfig(provider="deepseek/deepseek-chat", api_token = config.DEEPSEEK_API_KEY)
filter = LLMContentFilter(
llm_config=deep_config,
instruction="""
Extrae todo el contenido relevante incluyendo:
- Nombre de los productos
- Precios de los productos
- Enlaces de los productos
Ignora:
- Menús de navegación
- Barras laterales
- Pies de página
- Publicidad
- Elementos de UI no relevantes
Asegúrate de capturar todos los productos y mantener su formato.
""",
chunk_token_threshold=1000, # Aumentado para capturar más contenido
verbose=True
)
con_ia = DefaultMarkdownGenerator(content_filter=filter)
run_conf = CrawlerRunConfig(markdown_generator=con_ia, extraction_strategy=estrategia)
async def ejecutar_crawler():
async with AsyncWebCrawler() as crawler:
resultado = await crawler.arun(url="https://ezoco.es/shopezoco/", config=run_conf)
print("Extracción de contenido:", resultado.extracted_content)
await ejecutar_crawler()
Juande Marín
Profesor de Marketing digital, divulgador de inteligencia artificial y neuroeducación. Especializado en posicionamiento en buscadores y diseño web. Autor de varios libros relacionados con el comercio electrónico y el marketing digital (McGraw Hill, Paraninfo,…) Juande2marin