Web scraping es el proceso de extracción de datos de sitios web. Puedes hacer scraping manualmente usando navegadores web o automatizarlo con librerías como Selenium y Puppeteer.
Selenium es una herramienta de código abierto que le permite automatizar aplicaciones web y probar la funcionalidad de su sitio web sin tener que escribir ningún código en el navegador. También funciona con otros lenguajes de programación como Java, Python, C#, etc.
Puppeteer es una librería JavaScript para automatizar las pruebas del navegador Chrome en sistemas Linux headless. Puppeteer soporta Chrome y ha sido probado en Ubuntu 16.04 LTS, 18.04 LTS, y Debian 9 Stretch/Buster/Siduction (64-bit).
En este artículo, aprenderemos a utilizar Selenium WebDriver en NodeJS con Puppeteer para automatizar aplicaciones utilizando el navegador Chrome.
¿Qué es Puppeteer?
Puppeteer es una libreria JavaScript que permite controlar el navegador usando puppeteer.js. La biblioteca proporciona una API para crear, gestionar e interactuar con páginas web sin depender de terceros. También soporta la captura de eventos del ratón y la entrada del teclado para que pueda interactuar con la página.
¿Cómo funciona Puppeteer?
Puppeteer es una librería de nodos para controlar Chrome. Te permite controlar el navegador con JavaScript e interactuar con él de maneras que son imposibles usando sólo HTML, CSS y JS.
Puedes usarlo para simular eventos de ratón/teclado, capturar pantallas, manipular elementos DOM, enviar peticiones HTTP, etc. Puppeteer también tiene una API que te permite escribir tus scripts de titiritero sin usar ninguna de sus APIs directamente. Puedes leer más sobre la API aquí: https://github.com/puppeteerjs/puppeteer-api.
Puppeteer resuelve el siguiente problema: ¿Cómo puedo controlar un navegador sin poder ejecutar JavaScript? Puppeteer te permite simular eventos de ratón/teclado, capturar pantallas, manipular elementos DOM, enviar peticiones HTTP, y mucho más. También es posible escribir tus scripts titiriteros sin usar ninguna de sus APIs directamente. Esto es útil si quieres crear tu propia extensión de Chrome que interactúe con el navegador de forma inesperada.
La complejidad y el contexto de automatización cambian cada día, por lo que una herramienta puede no ser la solución para todos. Puppeteer tiene algunas limitaciones. Sólo es compatible con el navegador Chrome. Puppeteer para Firefox es un trabajo en progreso.
¿Cuáles son las ventajas de utilizar Puppeteer?
Puppeteer proporciona una manera fácil de ejecutar scripts en su navegador sin tener que escribirlos usted mismo. Es sencillo, ligero y extensible. Puedes usarlo con cualquier lenguaje de programación o framework (NodeJS, Python, Java). Tiene su propia API, por lo que no tienes que aprender otra API sólo para fines de web scraping.
No necesitas saber cómo funciona Selenium para usar Puppeteer, pero aún así obtendrás todos sus beneficios: automatización, testabilidad y portabilidad.
¿Cuáles son las desventajas de utilizar Puppeteer?
Puppeteer es un framework muy joven. Todavía está en beta y no soporta todos los navegadores (sólo soporta Chrome, Firefox, Opera y Safari). Sin embargo, con el tiempo Puppeteer será capaz de soportar más navegadores. La API tampoco está tan madura como la de Selenium, por lo que es posible que tengas algunos problemas al principio, pero mejorará con el tiempo. Puedes encontrar muchos ejemplos de cómo usar Puppeteer en su web oficial: puppeteerjs.com/docs/getting-started/.
¿Cómo instalar Puppeteer?
Puede instalar Puppeteer descargando un paquete de la página web o instalándolo manualmente. Ve a la página del repositorio de Puppeteer y descarga la última versión para tu sistema operativo. Para ejecutarlo, necesitas tener instalado NodeJS en tu ordenador. Si no sabes por donde empezar, ve aquí: nodejs.org/en/download. Ejecute npm install -g puppet. Esto descargará todas las dependencias necesarias para ejecutar puppetserver. Ahora abra una ventana de terminal en su directorio de inicio y escriba puppetserver.
Deberías ver algo como esto si todo va bien:
$ node server Starting server… done! http://localhost:4200 Connecting…done! http://localhost:4200 Disconnected / Connected http://localhost:4200 <– Start scraping now!
Para detenerte, pulsa Ctrl+C y, a continuación, escribe exit.
¿Qué es el selenio?
Selenium es una potente herramienta que puede utilizar para automatizar aplicaciones basadas en web. También se conoce comúnmente como Webdriver. Selenium existe desde hace bastante tiempo y se ha convertido en una de las herramientas más populares de la industria de TI.
¿Qué hace el selenio?
Selenium le permite automatizar sus sitios web ejecutando diferentes acciones como hacer clic en botones, rellenar formularios o incluso navegar por las páginas. El objetivo principal de este software es hacer que las pruebas automatizadas sean fáciles y eficientes sin tener que escribir ningún código usted mismo. Puedes utilizar este software desde tu navegador (Chrome/Firefox) o dentro de un lenguaje de programación como Java, C# o Python, etc. Una vez instalado en tu ordenador, debes descargar el servidor selenium, que se ejecuta en el puerto 4444 (por defecto). A continuación, abra Chrome/Firefox y escriba chrome://extensions en la barra de direcciones, donde verá una lista de las extensiones disponibles; seleccione Administrar extensiones y, a continuación, haga clic en el botón Cargar extensión desempaquetada.
Puede utilizar Selenium para probar sitios web, aplicaciones móviles y aplicaciones de escritorio. Es fácil de usar y permite automatizar aplicaciones basadas en web sin necesidad de tener conocimientos de programación. También puedes crear tus propias pruebas con el IDE de Selenium, que cuenta con una interfaz visual para desarrollar pruebas de forma sencilla.
Ventajas del selenio
- Funciona en todos los navegadores web (Chrome, Firefox, IE) y dispositivos móviles (Android). Selenium es multiplataforma. Todo lo que necesitas hacer es instalar un IDE para la plataforma de tu elección y empezar a utilizar la API. No tienes que aprender nuevas APIs o diferentes lenguajes para cada plataforma - sólo tienes que utilizar un lenguaje que se ejecuta en todas las plataformas.
- Selenium es compatible con la mayoría de los lenguajes de programación, incluyendo Java, C#, Python y muchos otros. Si quieres automatizar algo en JavaScript, puedes usar NodeJS con selenium-nodejs.
- Selenium soporta varios frameworks como Protractor, WebDriver, etc. Lo mejor de estos frameworks es que proporcionan una buena capa de abstracción que hace las cosas más fáciles que tener código de automatización del navegador puro escrito directamente en el propio navegador. Por ejemplo, si queremos que nuestras pruebas se ejecuten simultáneamente en varios navegadores, podemos hacerlo con selenium-web driver y selenium-webdriver2. Esto significa que no tendremos ningún problema al realizar pruebas en varios navegadores a la vez, ya que todo será gestionado por el propio framework en lugar de escribir manualmente código personalizado en cada navegador (lo que haría que nuestro conjunto de pruebas fuera mucho más complejo).
- Hay muchos plugins disponibles para Selenium, como extensiones de Google Chrome, complementos de Firefox, etc. ¿Y qué más? ¡Muchísimos ejemplos! Y no sólo de proyectos de código abierto, sino también comerciales como Appium, Sauce Labs, o Watir. Así que si buscas algo rápido y sencillo, ¡pruébalos! ¡Son herramientas geniales! También soportan pruebas asíncronas, lo que significa que aunque tu prueba pueda tardar más de lo esperado, no afectará a otras pruebas que se estén ejecutando concurrentemente en paralelo sin bloquear el flujo de ejecución de las demás (modo asíncrono). De este modo, podemos escribir pruebas de interfaz de usuario rápidas sin preocuparnos de ralentizar nuestra aplicación.
Tendencias del mercado de Selenium y Puppeteer: ¿Por qué debería importarle?
Las tendencias del mercado de Selenium y Puppeteer muestran que ha habido un aumento significativo en el uso en los últimos años, especialmente desde que Selenium 2 fue lanzado en 2014. La popularidad de Selenium ha seguido creciendo aún más desde entonces, lo que significa que es probable que siga creciendo a este ritmo en el futuro previsible.
¿Cuál es el futuro de las pruebas web?
La comunidad de código abierto sigue desarrollando nuevas tecnologías y mejorando las existentes sin dar señales de que vaya a ralentizarse pronto. Mientras sigamos innovando y creando nuevas herramientas, podemos esperar más mejoras en la tecnología de pruebas web.
Herramientas de automatización web: ¿Por qué debería utilizarlas?
Cuando llegue el momento de que los miembros de su equipo trabajen en sus proyectos o cuando necesiten ayuda para probar su base de código con pruebas automatizadas, tener acceso a una herramienta de automatización como WebDriver les facilitará mucho las cosas en lugar de probar soluciones manuales a mano cada vez que quieran probar algo manualmente.
Cuando dispones de una herramienta de automatización web como WebDriver, puedes utilizarla para automatizar tus pruebas y escribirlas en diferentes idiomas. También puede utilizarlo para interactuar con el navegador y probar características específicas de la aplicación que son difíciles o imposibles de hacer manualmente. Las posibilidades son infinitas.
El uso de una herramienta de automatización le hará la vida mucho más fácil al permitirle escribir pruebas automatizadas para su código base sin tener que preocuparse de cómo funcionan las cosas bajo el capó.
Selenium o Puppeteer: ¿Cuál es mejor para webscraping?
La principal diferencia entre los dos es que Puppeteer se ejecuta en Node.js, y Selenium se ejecuta en el navegador.
Puedes usar Puppeteer para pruebas de API y web scraping, pero no está tan ampliamente soportado como Selenium. Tampoco tiene un ejecutor de pruebas de interfaz de usuario incorporado, por lo que tendrá que escribir el suyo propio si desea utilizarlo con un navegador sin cabeza como PhantomJS o NightwatchJS.
Selenium tiene más soporte de navegadores que Puppeteer, y su ejecutor de pruebas de interfaz de usuario funciona de forma inmediata con los navegadores más populares (incluyendo Chrome). Sin embargo, algunas características todavía faltan en Selenium en comparación con Puppeteer. En particular, las API de WebDriver para interactuar con los elementos de una página, lo que significa que es más difícil automatizar interacciones complejas a través de múltiples páginas/dominios/aplicaciones (por ejemplo, hacer clic en enlaces) utilizando sólo esta biblioteca.
Ahora es el momento adecuado para mencionar que nuestros proxies residenciales rotativos mejoran enormemente las operaciones de web scraping tanto con Selenium como con Puppeteer.