Volver al blog
La ciencia del web scraping
Gabriel CiociLast updated on Mar 31, 202610 min read

Cómo influye JavaScript en el diseño web y el web scraping

Cómo influye JavaScript en el diseño web y el web scraping

¿Te acuerdas de la época del «salvaje oeste» de Internet, cuando cada diseñador web hacía lo que le daba la gana y las páginas estaban llenas de colores que no pegaban, decisiones de interfaz de usuario extrañas e imágenes deformadas? Menuda época.

Además, piensa en cómo se veían esos sitios web si accedías a ellos desde un teléfono o una tableta. Navegar por ellos no solo era una tarea tediosa, sino que resultaba francamente doloroso.

Ahora todo está mucho más optimizado, se basa en buenas prácticas de interfaz de usuario y está optimizado para todo tipo de tamaños de pantalla. Eso último se lo debemos a JavaScript. Es el lenguaje mágico que convierte las aburridas páginas estáticas en experiencias rápidas y dinámicas.

En resumen, JS es excelente cuando se optimiza un sitio web para humanos. Los bots, por otro lado, no lo gestionan tan bien. De hecho, los rastreadores web básicos no pueden extraer ningún HTML de sitios web dinámicos sin funcionalidades adicionales. No te preocupes, en este artículo explicaremos por qué ocurre esto y cómo superar el problema.

Un sitio web no necesita JavaScript. Puedes arreglártelas solo con HTML y CSS (o incluso solo con HTML si quieres ese toque de los 80). Entonces, ¿por qué la gente da un paso más y añade JS? Bueno, estás a punto de descubrirlo.

¿Por qué utilizan Javascript los sitios web?

Los sitios web, al igual que las casas, necesitan unos cimientos sólidos. La base de esos cimientos es el código HTML. Añadiendo algunas etiquetas y elementos, puedes usar HTML para crear y organizar secciones, encabezados, enlaces, etc.

Hay muy pocas cosas que no se puedan hacer con código HTML al crear un sitio web. La estructura de un elemento HTML consiste en una etiqueta de apertura, una etiqueta de cierre y el contenido entre ambas. El sitio web mostrará la información entre estas dos etiquetas según el formato que estas dicten.

Al aprender este sencillo estilo de programación, podrás añadir encabezados, enlaces, imágenes y mucho más a tu sitio web. Más adelante, podrás utilizar CSS para especificar qué estilos se aplican a cada elemento.

CSS, abreviatura de Cascading Style Sheets (hojas de estilo en cascada), es el toque de estilo de tu HTML. Si el HTML es tu estructura, el CSS es la decoración. Te permite cambiar los colores, las fuentes y los diseños de página en toda la página.

En este punto, el sitio web ya está listo, aunque resulte un poco soso. También puede sufrir tiempos de carga largos si pones demasiados datos en muy pocas páginas, o volverse tedioso de navegar si repartes el contenido en demasiadas páginas.

Así que es hora de mejorar la experiencia. JavaScript es como los servicios públicos de una casa: no es crucial para la estructura, pero marca una gran diferencia para quien vive allí.

JavaScript se utiliza principalmente en navegadores web y aplicaciones web, pero es uno de los lenguajes más populares en este momento, y se puede encontrar en software, servidores y controles de hardware integrados.  

Aquí tienes algunos ejemplos de las muchas cosas para las que puedes utilizarlo:

  • Reproductores de audio y vídeo en un sitio web
  • Animaciones
  • Menús desplegables
  • Acercar y alejar fotos
  • Desplazarse por las imágenes de una página de inicio
  • Creación de cuadros de confirmación

En la web se puede acceder a diversos marcos de trabajo de JavaScript, como AngularJS, ReactJS y Node.js. El uso de estos marcos permite reducir el tiempo necesario para crear sitios web y aplicaciones basadas en JS. JavaScript facilita a los desarrolladores la creación de aplicaciones a gran escala. Hace que todo el proceso de creación de aplicaciones web a gran escala sea mucho más accesible.

Últimamente, muchos sitios web se han vuelto cada vez más complejos, y ha surgido una necesidad repentina de «statefulness», es decir, de que se guarden los datos y la configuración del cliente.

¿Qué es la «statefulness» en el diseño web?

Un sistema con estado es un componente dinámico en el sentido de que recuerda eventos importantes como datos de estado y adapta el sitio web en función de ellos. Es más fácil de entender con un ejemplo:

Bob accede a un sitio web y se registra para crear una cuenta. El sistema recordará su inicio de sesión y su estado la próxima vez que acceda al sitio web. De esta forma, Bob no tendrá que ir a la página de inicio de sesión porque el sitio web le redirigirá automáticamente a la sección exclusiva para miembros.

Entre bastidores, un proceso crea un sistema intermediario que recuerda los datos del usuario y le redirige automáticamente al servidor o sitio web correcto.

Por otro lado, un sistema sin estado no recordará ni se adaptará, y enviará al usuario a la página de inicio de sesión, obligándole a volver a introducir sus credenciales cada vez.

Este principio se puede aplicar a cualquier parte del diseño web. Sea lo que sea lo que modifiques en el cuerpo, el estado se adaptará en consecuencia. Manipula una miríada de componentes que aparecen en la página web. El estado permite al sitio web almacenar información específica del usuario para ofrecer una experiencia personalizada (derechos de acceso), incluyendo el historial de interacción y la configuración guardada.

El diseño web te permite almacenar información sobre tus usuarios en un servidor, mientras que el almacenamiento del navegador puede recordar datos, pero solo hasta el final de la sesión.

¿Cómo afecta JavaScript al web scraping?

JavaScript es un lenguaje de programación sencillo diseñado para dotar de funcionalidad dinámica a los sitios web dentro del navegador. Cuando se carga una página web, su código JS es ejecutado por el motor de JavaScript del navegador y convertido en código legible por la máquina. Aunque esto reduce el tiempo de carga, los sitios web modificados dinámicamente pueden entorpecer el web scraping.

Los rastreadores básicos realizan una solicitud HTTP al sitio web y almacenan el contenido de la respuesta. En circunstancias normales, esa respuesta contendrá el código HTML de la página. Sin embargo, los sitios web dinámicos devuelven JavaScript, que no contiene datos valiosos.

Además, muchos sitios web pueden detectar si el visitante puede ejecutar Javascript o no. Dado que los usuarios medios navegan por Internet a través de un navegador, no pueden ejecutar JS, lo que deja claro que no están utilizando un navegador. A partir de ahí, queda bastante claro para los sitios web que es un bot y no un humano quien los visita. Esto suele dar lugar a que se bloquee la IP del bot.

En resumen, los sitios web que utilizan JS no pueden ser rastreados sin las herramientas adecuadas, y los rastreadores que no pueden ejecutar JS son mucho más fáciles de detectar que los que sí pueden.

¿Cómo gestionan los rastreadores web el Javascript?

Por suerte, hay una solución: los navegadores sin interfaz gráfica. Estos programas son esencialmente iguales que los navegadores normales, con las mismas capacidades pero sin la interfaz gráfica de usuario estándar. Por lo tanto, para navegar a través de un navegador sin interfaz gráfica, hay que utilizar la línea de comandos. Aunque se utilizan principalmente para probar aplicaciones y sitios web, también pueden ejecutar código JavaScript, lo que los convierte en complementos ideales para los rastreadores web.

Una vez que el navegador sin interfaz gráfica gestiona el código JS, el sitio web enviará HTML normal, es decir, los datos que realmente quieres.

Otra ventaja que tienen los navegadores sin interfaz gráfica sobre los demás es su velocidad. Como no tienen que preocuparse por la interfaz gráfica de usuario ni por cargar JS o CSS, pueden procesar las páginas mucho más rápido, lo cual es excelente para el web scraping, ya que no ralentiza demasiado al bot.

Si quieres una solución de extracción de datos «hazlo tú mismo», hay dos lenguajes de programación preferidos: Python y Node.js.

Python y Selenium

Si eliges Python, la biblioteca de referencia para la renderización de JS es Selenium. Es una opción fiable para ejecutar JavaScript, interactuar con botones, desplazarse y rellenar formularios en línea. Se utiliza principalmente para proyectos de código abierto en la automatización de navegadores. El protocolo WebDriver controla navegadores como Chrome y Firefox y puede ejecutarse tanto de forma remota como local.

Creado originalmente como una herramienta para pruebas entre navegadores, Selenium se ha convertido rápidamente en una completa colección de herramientas para la automatización de navegadores web. Dado que muchos sitios web están construidos como aplicaciones de página única que envían CAPTCHAs incluso a usuarios reales, la extracción de datos empieza a parecer cada vez más una tarea desalentadora debido a la hipervigilancia en torno a la detección de bots.

Con Selenium, el bot puede leer y ejecutar código JavaScript para que tengas acceso al HTML, rellenar formularios para que puedas iniciar sesión en sitios web, desplazarte hacia abajo en una página web e imitar clics.

Pero si estás haciendo scraping en Python, no te limites a Selenium. Puedes complementarlo con la biblioteca BeautifulSoup, que facilita enormemente el análisis de HTML y XML, y luego utilizar Pandas para extraer y almacenar tus datos en un archivo CSV.

Node.js y Puppeteer

Puppeteer es un paquete de Node.js que te permite ejecutar Chrome o Chromium sin interfaz gráfica e integrar el protocolo DevTools. El equipo de Chrome DevTools y una fantástica comunidad de código abierto se encargan de su mantenimiento.

Esta solución te ayudará a gestionar un rastreador web en el contexto de la estructura en constante cambio de un sitio web. El principal obstáculo del scraping es que las herramientas requieren actualizaciones constantes para adaptarse y no verse limitadas por los servidores.

¿Qué puede hacer Node.js? Ayuda a JavaScript a ejecutarse tanto en el lado del cliente como en el del servidor de forma gratuita, al tiempo que permite crear aplicaciones de red mucho más rápido.

Pero centrémonos en la estrella del web scraping. Puppeteer te permite manejar un navegador web manualmente: desde rellenar formularios y hacer capturas de pantalla hasta automatizar pruebas de interfaz de usuario.

Si no has trabajado con estas bibliotecas antes o acabas de empezar tu andadura en el web scraping, entiendo que todo esto pueda parecer intimidante. Sin embargo, existe una solución aún más cómoda que hace todo el trabajo por ti: una API.

También conocidas como Interfaz de Programación de Aplicaciones, las API permiten a los usuarios obtener los datos de inmediato. Al realizar una solicitud al punto final de la API, la aplicación te proporcionará los datos que necesitas. Además, estos se reciben automáticamente en formato JSON.

La mayor ventaja de utilizar una API es lo sencillo que resulta conectarla con tus otros productos de software o scripts. Con solo unas pocas líneas de código, puedes enviar los datos extraídos directamente a otras aplicaciones tras recibir tu clave de API única y leer la documentación.

Aquí tienes un resumen rápido de todo lo que WebScrapingAPI hace por ti:

  • Ejecuta Javascript y accede al código HTML detrás de las páginas web dinámicas
  • Utiliza un conjunto de proxies rotativos que contiene cientos de miles de direcciones IP residenciales y de centros de datos para ocultar tu actividad
  • Ofrece acceso a los encabezados de solicitud para que puedas personalizar tus llamadas a la API y asegurarte de que el rastreador sea indistinguible de los visitantes normales
  • Incorpora funciones anti-huella digital y anti-captcha
  • Devuelve los datos ya analizados en un archivo JSON.

Una solución de web scraping sin complicaciones

Desde el diseño web, HTML, CSS y JavaScript hasta los navegadores sin interfaz, la World Wide Web siempre vuelve al punto de partida: datos que circulan libremente. Por eso existe Internet en primer lugar. ¿Qué mejor manera de aprovechar la gran cantidad de contenido que la recopilación de datos? Al fin y al cabo, ¿dónde estarían hoy las empresas, los desarrolladores e incluso la gente en general sin acceso a información valiosa?

Es realmente lo que nos impulsa a todos. Ahora que entiendes cómo afecta Javascript a la Internet actual, estás mejor preparado para empezar a extraer datos, y espero que lo hagas. Si andas corto de tiempo, considera probar nuestra propia solución, WebScrapingAPI, de forma gratuita. El periodo de prueba dura dos semanas y tendrás acceso a todas las funciones esenciales, como el renderizado JS y los proxies residenciales.

Echa un vistazo a lo que puede hacer la API y, si aún no estás convencido, ponte en contacto con nuestro servicio de atención al cliente, increíblemente receptivo, para que te orienten.

Acerca del autor
Gabriel Cioci, Desarrollador full-stack @ WebScrapingAPI
Gabriel CiociDesarrollador full-stack

Gabriel Cioci es desarrollador full stack en WebScrapingAPI, donde se encarga de crear y mantener los sitios web, el panel de usuario y los componentes principales de la plataforma destinados a los usuarios.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.