Screen scraping: herramientas, ejemplos en Python y automatización

Una página de producto muestra un título, un precio y la disponibilidad, pero necesitas esos datos en un conjunto de datos que puedas actualizar y comparar.
Esta guía usa Yozh Scraper de CyberYozh para demostrar el screen scraping, empezando por una sola página y avanzando hacia una recopilación repetible.
Aprenderás a elegir un método de extracción, a comprobar que el resultado coincide con la página y a guardar registros útiles. A partir de ahí, veremos opciones de Python y de automatización para repetir la tarea, junto con los ajustes de proxy para cuando importan la ubicación o la coherencia de la conexión.
Qué hace el screen scraping
El screen scraping extrae los datos que se muestran en un sitio web, una aplicación de escritorio o una interfaz de terminal. Puede leer el texto de los elementos de la interfaz o usar reconocimiento óptico de caracteres (OCR) para reconocer texto en imágenes.
¿Qué es el screen scraping?
El screen scraping es la extracción automatizada de la información que se presenta a través de una interfaz de usuario. Un screen scraper lee esa información y la convierte en datos que otro sistema puede usar, como filas de una hoja de cálculo o campos de un archivo JSON.
El funcionamiento del scraper depende de la fuente:
Páginas web: un navegador carga una página de producto y el scraper recoge su título, precio y disponibilidad del contenido renderizado.
Aplicaciones heredadas: la automatización lee datos de inventario o de clientes de un sistema empresarial antiguo que no ofrece una opción de exportación útil.
Imágenes: el reconocimiento óptico de caracteres (OCR) convierte el texto de una captura de pantalla o de una imagen escaneada en caracteres legibles por máquina.
¿Cómo funciona el screen scraping?
En una página de producto, por ejemplo de Amazon, el navegador carga la interfaz, las reglas de extracción identifican los valores y la validación comprueba si los resultados son utilizables. El proceso consta de cinco etapas:
Abrir la página. Accede a la URL del producto con los ajustes de ubicación y sesión que necesite tu tarea.
Esperar al contenido necesario. Confirma que el precio y la disponibilidad se han cargado antes de recogerlos.
Localizar y extraer los campos. Usa reglas de selección para capturar el título del producto, el precio, la moneda y el estado del stock.
Validar los valores. Comprueba si faltan campos, si hay monedas inesperadas y si se han capturado por error mensajes de error como datos del producto.
Guardar el resultado. Almacena los registros con sus URL de origen y las horas de recopilación para poder comparar resultados más adelante.
Tu scraper de Amazon puede devolver los campos extraídos junto con una captura de pantalla. Conservar ambos ayuda a investigar discrepancias: puedes comparar un valor ausente o incorrecto con lo que mostraba el navegador e identificar dónde falló la extracción.
Screen scraping frente a web scraping y API
Elige el método que proporcione los campos necesarios con el menor procesamiento superfluo. Primero busca una API o una exportación útil y después determina si los datos están disponibles en el HTML de la página o si requieren interacción con el navegador.
Método | Qué lee | Cuándo conviene | Principal requisito de mantenimiento |
API o exportación | Respuestas estructuradas o archivos descargables | La fuente ofrece los campos que necesitas | Seguir los cambios de esquema, los requisitos de acceso y las cuotas |
Extracción directa de HTML | HTML devuelto por el servidor | Los valores están presentes sin ejecutar JavaScript | Actualizar las reglas de extracción cuando cambia el marcado |
Extracción basada en navegador | Elementos de la página tras el renderizado o la interacción | El contenido depende de JavaScript, de filtros o del estado de la sesión | Mantener los selectores, las condiciones de carga y las sesiones |
OCR o automatización de escritorio | Píxeles de imagen, texto de terminal o controles de aplicaciones | Una interfaz ofrece los datos sin una exportación útil | Revisar los cambios de diseño, los identificadores de controles y la precisión del reconocimiento |
El screen scraping y el web scraping se solapan. Renderizar un sitio web y leer los elementos de su página sigue siendo web scraping; usar un navegador no implica automáticamente interpretar píxeles.
Yozh Scraper encaja en la vía basada en navegador, donde el renderizado, el estado de la página y los ajustes de extracción reutilizables ayudan a que la recopilación sea repetible.
Herramientas de screen scraping: elige según la fuente de datos
Las herramientas de screen scraping web adecuadas dependen de dónde aparecen los datos y de cómo accedes a ellos. Las herramientas de screen scraping de código abierto cubren la automatización del navegador y el OCR, mientras que las plataformas más amplias también admiten procesos de escritorio.
Yozh Scraper: un servicio de extracción en navegador listo para usar
Yozh Scraper ofrece una API autoalojada que usa Playwright para cargar páginas web y devolver campos seleccionados, HTML y capturas de pantalla. Los presets y los trabajos por lotes ayudan a repetir una configuración de extracción ya probada.
Se instala con Docker; el probador visual opcional se ejecuta por separado y requiere Node.js. El software es gratuito y de código abierto, mientras que el alojamiento del servidor, los proxies de pago y el uso opcional de proveedores de IA tienen costes aparte. Puedes empezar en local sin activar integraciones de pago. En la siguiente sección se usa Yozh para configurar una extracción y verificar sus resultados.
Playwright: control directo del navegador desde Python
Elige Playwright cuando quieras programar clics, filtros y navegación en Python. Ofrece automatización del navegador, mientras que tu código define la extracción, la validación y el almacenamiento. Tú mantienes los selectores y las condiciones de carga.
Tesseract: reconocimiento de texto en imágenes
Tesseract proporciona un motor de OCR que convierte el texto de las imágenes en una salida legible por máquina. Combínalo con una herramienta de captura de pantalla o de imágenes cuando el texto necesario solo exista como píxeles.
UiPath: automatización entre interfaces de aplicaciones
UiPath es adecuado para tareas que implican software de escritorio, sistemas heredados y varias aplicaciones. Sus opciones de extracción de interfaz y de OCR ayudan a automatizar procesos en los que las herramientas de navegador por sí solas no llegan a toda la información necesaria.
Cómo hacer screen scraping con Yozh Scraper
Empieza con una página de producto de prueba con campos predecibles. Su contenido estático resulta útil para aprender los controles antes de abordar sitios web dinámicos.
1. Define el resultado
Crea un registro que contenga el título del producto, el precio, la disponibilidad, la URL de origen y la hora de recopilación. Extrae de la página los tres primeros; añade la URL y una marca de tiempo UTC al guardar el registro.
2. Inicia el scraper
Con Git y Docker instalados, sigue la guía de instalación de Yozh Scraper:
git clone https://github.com/CyberYozh-data/yozh-scraper
cd yozh-scraper
cp .env.example .env
docker compose up --build3. Abre el probador visual
El probador se inicia por separado y requiere Node.js. En otra terminal, ve a la carpeta del repositorio y ejecuta:
cd scraper-tester
npm install
node server.jsAbre http://localhost:7000 y comprueba que la conexión con el scraper funciona correctamente.
4. Configura la extracción
En Scrape Page, introduce la URL de prueba, selecciona una conexión directa (ninguna) y configura la extracción CSS con estas reglas:
Campo | Selector CSS |
Título | .product_main h1 |
Precio | .product_main .price_color |
Disponibilidad | .product_main .availability |
Lee el texto de cada elemento y marca los campos como obligatorios. Establece wait_for_selector en .product_main .price_color. Activa la salida de captura de pantalla y mantén desactivado el bloqueo de imágenes.
5. Ejecuta una muestra pequeña
Ejecuta una página y compara los valores extraídos con su captura de pantalla. Revisa los espacios en blanco y conserva la moneda antes de guardar el registro. Son valores de demostración, no datos reales de mercado.
6. Guarda un preset reutilizable
Abre Presets, obtén la misma muestra, elige Manual e introduce las reglas verificadas. Usa Verify y guarda el preset con un nombre descriptivo. Selecciónalo en Scrape Page y prueba otra página de libro antes de ampliar la recopilación. La selección de campos asistida por IA también está disponible si se configura.
Cuando un objetivo posterior requiera acceso regional, configura tu clave de API de CyberYozh y la conexión de proxy adquirida. Los proxies residenciales rotativos admiten la ubicación y la geolocalización; comprueba la región devuelta antes de recopilar un conjunto de datos más grande.
Screen scraping con Python: extrae y guarda los datos de la página
El screen scraping con Python te da control sobre la navegación, la extracción y el almacenamiento. Este ejemplo usa la misma página de producto de Books to Scrape y los mismos selectores del tutorial visual, y después guarda un registro validado como JSON.
Instala Playwright con python -m pip install playwright, seguido de python -m playwright install chromium. Guarda el script como scrape_product.py y ejecuta python scrape_product.py.
Para una conexión opcional de CyberYozh, define estas variables de entorno en el shell desde el que ejecutes el script:
CYBERYOZH_PROXY_SERVER: tu endpoint de proxy HTTP, con el formato http://HOST:PORT.
CYBERYOZH_PROXY_USERNAME: tu nombre de usuario del proxy.
CYBERYOZH_PROXY_PASSWORD: tu contraseña del proxy.
Sin la variable del servidor, el script se conecta directamente. Playwright admite la configuración de proxy para el navegador o para un contexto de navegador individual.
import json
import os
from datetime import datetime, timezone
from playwright.sync_api import sync_playwright, TimeoutError
URL = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
FIELDS = {
"title": ".product_main h1",
"price": ".product_main .price_color",
"availability": ".product_main .availability",
}
options = {}
if server := os.getenv("CYBERYOZH_PROXY_SERVER"):
options["proxy"] = {
"server": server,
"username": os.getenv("CYBERYOZH_PROXY_USERNAME", ""),
"password": os.getenv("CYBERYOZH_PROXY_PASSWORD", ""),
}
with sync_playwright() as p:
browser = p.chromium.launch(**options)
try:
page = browser.new_page()
response = page.goto(URL, wait_until="domcontentloaded")
if response is None or not response.ok:
raise SystemExit("Page request failed; check the URL and connection.")
record = {}
for field, selector in FIELDS.items():
element = page.locator(selector)
try:
element.wait_for(state="visible", timeout=10000)
value = " ".join(element.inner_text().split())
except TimeoutError:
raise SystemExit(f"Required field missing or not ready: {field}")
if not value:
raise SystemExit(f"Required field is empty: {field}")
record[field] = value
record.update(
source_url=page.url,
collected_at=datetime.now(timezone.utc).isoformat(),
)
with open("product.json", "w", encoding="utf-8") as output:
json.dump(record, output, ensure_ascii=False, indent=2)
print("Saved product.json")
finally:
browser.close()El script espera a cada elemento obligatorio, elimina el exceso de espacios en blanco y conserva la moneda mostrada. Si falta un campo o está vacío, la ejecución se detiene con un mensaje claro antes de escribir un nuevo registro. El resultado correcto incluye la URL de origen y la hora de recopilación en UTC; al volver a ejecutar el script se sustituye product.json.
Consejo profesional: para saber más sobre cómo seleccionar campos y organizar los valores extraídos, consulta la guía sobre el parsing de datos.
Si ya has configurado Yozh Scraper, Python puede reutilizar tu preset guardado a través de su API REST:
Envíalo a POST /api/v1/scrape/preset/page y conserva el job_id devuelto.
Consulta GET /api/v1/scrape/{job_id} hasta que termine, con un tiempo de espera global y gestión de los trabajos fallidos o cancelados.
Recupera GET /api/v1/scrape/{job_id}/results, valida los campos y guárdalos.
Automatiza el screen scraping con crawlers, programaciones y herramientas de IA
Cuando la extracción de la primera página de producto funciona, el siguiente reto es recopilar datos actualizados de todo el catálogo. Construye la automatización sobre esa configuración probada, con límites en el descubrimiento, ejecuciones programadas y comprobaciones antes de guardar los resultados.
Descubre más páginas con Yozh Crawler
Yozh Crawler descubre URL y pasa las páginas a Yozh Scraper para su extracción. Empieza desde una página de categoría, limita el descubrimiento al dominio o patrón de URL previsto y establece límites máximos de páginas y de profundidad.
La gestión de duplicados evita visitar repetidamente URL equivalentes, mientras que el control del ritmo de las solicitudes regula la velocidad a la que se obtienen las páginas. Empieza con un rastreo pequeño e inspecciona su cobertura antes de ampliarlo. Así se detectan pronto las páginas irrelevantes y las categorías de producto que faltan.
Programa la recopilación con n8n
Conecta n8n a un endpoint accesible de la API REST de Yozh y construye esta secuencia:
Disparador programado → enviar trabajo de scraping → comprobar finalización → validar resultados → guardar datos.
Usa el Schedule Trigger de n8n para definir el intervalo y un nodo HTTP Request para enviar el trabajo. Conserva su ID de trabajo y usa después un bucle de espera y comprobación para supervisar su finalización. Añade un tiempo de espera global y una rama de fallo para que los trabajos fallidos reciban atención.
Antes de guardar, comprueba los campos obligatorios y añade la hora de recopilación. Esta integración usa la API de Yozh y los nodos estándar de n8n, y la programación se gestiona en n8n.
Consejo profesional: para conocer otras formas de programar la recopilación recurrente, consulta la guía sobre automatización del web scraping.
Conecta un asistente de IA mediante MCP
Model Context Protocol (MCP) permite que los asistentes de IA compatibles llamen a herramientas externas. Tras conectar un asistente al endpoint MCP de Yozh, puedes pedirle que envíe una extracción, compruebe el trabajo y recupere los resultados.
Los presets opcionales asistidos por IA pueden generar reglas de extracción a partir de una descripción o de un esquema. Cuando están activados, la reparación de selectores se activa cuando un campo obligatorio devuelve un valor vacío. Valida el resultado reparado con la fuente, ya que los campos rellenados aún pueden contener valores incorrectos.
Configura las credenciales del proveedor de IA correspondiente y ten en cuenta los cargos por uso al activar estas funciones.
Elige los ajustes de conexión y sesión para tu tarea
Al hacer screen scraping en sitios web, elige los ajustes de conexión según la ubicación que necesites, la duración de la sesión y la frecuencia con la que vuelves a visitar una página. Las opciones de proxy de CyberYozh se adaptan a distintos requisitos:
Residenciales rotativos: usa IP regionales para recopilar páginas de producto o listados independientes. Para pasos encadenados, elige sesiones sticky de hasta 24 horas y mantén la misma configuración de sesión.
Accede a 100 M de IP residenciales reales.
ISP estáticos: elige una IP fija para visitas repetidas o tareas autenticadas que necesiten una dirección de red constante.
Alquila tu proxy ISP estático y usa una misma dirección durante todo el periodo de alquiler.
Móviles LTE/4G/5G: el tráfico ilimitado permite una recopilación sostenida con navegador cuando las pruebas confirman que una conexión de operador es adecuada para el objetivo. Tráfico ilimitado describe la facturación, no la velocidad de conexión.
Consigue tu proxy móvil con IP limpias y sin parches.
Datacenter: considéralos para fuentes públicas adecuadas en las que una prueba pequeña confirme que el acceso y la extracción funcionan.
Consigue proxies de datacenter dedicados IPv4/IPv6 de alta velocidad con 99,99 % de uptime.
Las cookies del navegador, las sesiones de inicio de sesión de la aplicación y la persistencia de la IP del proxy cumplen funciones distintas. Las cookies pueden contener identificadores o tokens de autenticación, mientras que la aplicación determina si tu sesión sigue siendo válida. La persistencia del proxy mantiene constante la IP visible desde el exterior. Conservar una IP no prolonga una sesión caducada, y conservar las cookies no impide que cambie la IP.
Antes de un trabajo, el IP Checker de CyberYozh puede ayudarte a inspeccionar las señales de reputación y ubicación. Su API permite enviar comprobaciones de reputación de IP y recuperar informes. Usa esos resultados junto con solicitudes de prueba pequeñas: cada objetivo aplica sus propias reglas de acceso, de modo que un informe favorable no garantiza cómo responderá.
Problemas habituales del screen scraping y cómo solucionarlos
Cuando una ejecución produce registros incompletos o incoherentes, compara la captura de pantalla guardada con el resultado de muestra del mismo trabajo. Esto ayuda a distinguir un problema de carga de la página de un error de extracción o de formato.
Problema | Qué comprobar y cómo solucionarlo |
Campos ausentes | Espera al contenido necesario, verifica los selectores con la página actual y marca los campos obligatorios vacíos antes de guardar. |
Precios incorrectos | Confirma la moneda, el lugar de entrega y la variante seleccionada. Revisa los separadores decimales antes de convertir los precios en números. |
Contenido inesperado de la página | Inspecciona el estado de inicio de sesión, las pantallas de consentimiento y las redirecciones. Confirma que los ajustes de idioma y región coinciden con la vista prevista. |
Registros duplicados | Normaliza las URL equivalentes y usa identificadores de producto estables. Conserva las diferencias relevantes entre variantes, regiones y horas de recopilación. |
Límites de frecuencia repetidos | Identifica el servicio que devuelve 429. Reduce la frecuencia de solicitudes y la concurrencia, respeta Retry-After y limita los reintentos con retardos crecientes. |
Cambios de diseño | Actualiza las reglas de extracción o usa la reparación de presets configurada y, después, verifica manualmente el resultado revisado con la página. |
Después de modificar un preset de Yozh, vuelve a ejecutar una muestra pequeña antes de reiniciar la recopilación completa. Para conocer en detalle la gestión de reintentos, consulta 429 too many requests.
¿Es legal el screen scraping?
El screen scraping puede ser legal, pero la legalidad depende de la fuente, del método de acceso, del tipo de datos, de la jurisdicción y del uso previsto. Poder ver una página no autoriza automáticamente todas las formas de recopilación o reutilización.
Antes de ejecutar un trabajo, revisa las condiciones contractuales del sitio, las restricciones de acceso y los permisos o licencias que requiera tu actividad. Ten en cuenta los derechos de autor y los derechos sobre bases de datos cuando proceda, sobre todo si piensas republicar o vender el material recopilado.
Las obligaciones en materia de privacidad también siguen siendo relevantes. Las autoridades internacionales de protección de la privacidad han subrayado que la información personal accesible públicamente puede seguir estando protegida por las leyes de protección de datos.
Para este ejemplo, limita Yozh Scraper a las páginas de prueba y a los campos de producto seleccionados. En un entorno de producción, documenta el alcance permitido, recopila solo los datos necesarios, restringe el acceso a los registros almacenados y establece reglas de conservación y eliminación. Incluye el HTML y las capturas de pantalla guardados en esos controles, ya que pueden contener información adicional.
