Un itinerario en el multiverso

Ponerse al día. El mantra de todo programador que tenga claro que lo que aprende hoy estará obsoleto mañana. Toca estudiar de forma constante, «estar al día», «a la última» y sobretodo, ser capaz de adaptarse y adoptar las novedades que no paran de surgir en nuestro ámbito. El desarrollo de software no es lo que era hace dos o tres décadas. Ya no vale trabajar con la misma herramienta durante 10 años. Eso es impensable. Por tanto, lo importante es tener conceptos claros, aplicables a cualquier lenguaje o herramienta de desarrollo, creando una base de conocimientos independiente de los mismos.

De ahí el título de este artículo. Itinerario, si, una buena forma de describir el camino a seguir para llegar a un objetivo, por ejemplo, cómo hacer web scraping. Multiverso. El multiverso es toda la plétora de tecnologías posibles para resolver un problema.

En el ejemplo, dicho multiverso puede visualizarse con las diferentes combinaciones de herramientas disponibles para la tarea concreto, que es la captura de datos y contenidos mediante scraping. ¿Qué lenguaje vamos a utilizar? ¿Qué librerías están disponibles para el mismo? ¿Hay alternativas ya pre-programadas? ¿Vale la pena utilizar un servicio de scraping online? Las soluciones software son infinitas para cualquier problema y uno tiene que elegir. ¿Cuál es la más rápida? ¿Cuál es la más eficiente? ¿Cuál es la más sencilla de implementar?

Haciendo un poco de memoria recuerdo que la primera vez que ví una forma de descargar una página Web, aparte del clásico «Guardar página como» fue la utilidad wget, dejando a un lado algunos spiders primerizos que permitían descargar todo un sitio Web, con sus páginas, imágenes, etc. Con wget podías construir scripts shell para controlar un poco qué hacer con las descargas. Con curl pasaba algo parecido. Más tarde aparece aria, ampliando las posibilidades. Todo ello desde la simple línea de comandos. Todas esas páginas descargadas había que procesarlas con algo. Una herramienta como sed, grep o awk se postulaba como una posible forma de filtrar, cortar y pegar datos diversos desde el origen html de cada página descargada. Sin duda un trabajo tedioso de investigación y ajuste de filtros, expresiones regulares, etc. para generar ficheros de texto con los datos deseados.

El resultado es una colección de tareas mediante scripts los cuales había que documentar bien para poder seguir sus pasos y reutilizarlos o ponerlos al día cuando hiciera falta. Si no, al cabo del tiempo el caos podía ser espectacular.

Digamos que ese sería el nivel de «código máquina» del scrap.

«Al segundo día….» aparecen librerías integradas en lenguajes de programación que permiten hacer esas descargas Web. Ya fuera PHP, Python, etc. Cualquier lenguaje con protocolo http podía hacer ese trabajo, e integrando el resto del lenguaje, examinar y extraer la información.

Más allá aparecen las librerías especializadas para esta tarea, los parsers. Parsers para tratar con xml, html, etc. Facilitan localizar los elementos del documento (DOM) y encontrar los datos de forma más eficiente, más dirigidos, más rápido. Algunas de esas librerías también funcionan como herramientas autónomas.

En este punto empiezan las dificultades. Páginas web dinámicas con Javascript, páginas con identificación de usuario, en suma, páginas que requieren de la intervención de un operador humano para llegar al contenido que interesa. Y ahí entra Selenium y alguna otra librería más. Simular un navegador al 100%, tal como lo haría una persona.

¿Qué será lo siguiente? ¿Algún sistema para automatizar una secuencia de acciones «humanas» para que el scraper reciba directamente los contenidos sin pasar por ventanas emergentes simulando navegadores, lo cual ralentiza los procesos? Estoy seguro de que será así, y más allá seguirán surgiendo barreras y sus correspondientes soluciones.

Eso es un itinerario de aprendizaje concreto. Uno de entre miles posibles en el multiverso del software. ¡Si alguna cosa tiene el desarrollo de aplicaciones es que no es aburrido!

Con este ejemplo, uno más entre miles posibles, lo que quiero decir es que si te planteas entrar en el sector de la programación, «estudiar Java en tres semanas» no te va a servir de mucho. Ni siquiera un año entero. Mira una oferta de trabajo. Busca por «Java». ¿Qué es todo lo demás que te están pidiendo? Investiga. Aprende lo que es Jenkins, Spark, PyTorch, NoSQL, SOLID, TDD, MongoDB, JavaScript, CSS, ….. (la lista es infinita). Efectivamente que seas muy bueno muy bueno en Java (como si ponemos Go, PHP, C++, da lo mismo) no te servirá de mucho sin todo lo demás. De ahí que para mí la palabra itinerario tenga mucho significado. Por una parte, es un camino para llegar a una meta, sin duda. Por ejemplo aprender a hacer scraping con Python es un itinerario. Otro sería aprender a reconocer caras mediante la cámara de móvil con iOS. La idea es que éstos son itinerarios concretos. El que realmente me importa es el itinerario de toda una vida dedicada a una actividad, la cual se llena de múltiples bifurcaciones y paralelas con ese otro tipo de itinerarios que conforman un gran viaje.

Piensa en la meta que quieres alcanzar. El camino estará lleno de piedrecitas, rocas, oasis, remansos y toda clase de climas, y algún centauro… Pero será divertido, ya lo he dicho antes.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies