WEB SCRAPING EMPRESAS DE CONSTRUCCIÓN
En el departamento del Atlántico – Colombia existen muchos proyectos de vivienda, donde personas de todas las clases sociales pueden conseguir su propia casa, pero la información no está centrada en una sola empresa, cada empresa tiene su información en su propio sitio web, y ver página por página es tedioso.
Sabiendo eso, investigué las principales empresas que están desarrollando proyectos de vivienda en el Atlántico y comencé a desechar datos como nombre, tipo, descripción, área del apartamento, etc. Después de eso, almacene esa información en un archivo de Excel para observar la información y comparar proyecto por proyecto como una hoja de datos.
SPRAP(RASPAR) DATOS
Primer paso, investigar qué empresas estaban desarrollando proyectos de vivienda en Atlántico, luego de eso, analizar la estructura del sitio web de cada empresa, este es un paso importante en este momento para probar el scrap inspeccionando el HTML con las herramientas de desarrollador de su navegador. Identifique los elementos que contienen los datos que necesita, anotando etiquetas, clases o ID. Elija una herramienta o biblioteca de scraping (como BeautifulSoup y Selenium en Python). A continuación, realice una solicitud al sitio web y analice la respuesta HTML. Utilice las etiquetas identificadas para extraer los datos deseados, iterando a través de elementos según sea necesario, como nombre del proyecto, mapa de Google de la URL, ciudad, precio, etc. Finalmente, limpie y organice los datos para su análisis o almacenamiento, asegurando el cumplimiento de los términos de servicio del sitio web y el archivo robots.txt.
En este caso, organicé los datos por empresa utilizando clases. En la programación orientada a objetos (OOP), las clases son planos para crear objetos. Encapsulan datos (atributos) y comportamientos (métodos) que definen las propiedades y acciones de los objetos. Las clases promueven la reutilización y la modularidad al permitir a los desarrolladores crear múltiples instancias con estructura y funcionalidad compartidas, lo que permite una gestión y organización eficiente del código. Por lo tanto, creé cada clase por empresa, donde tenía dos atributos, la URL principal del sitio web y la lista donde se guardará el almacenamiento de datos en los diccionarios. Además, tiene un método o función que se encarga de rasparlo y guardarlo en un diccionario dentro de un bucle FOR, finalmente, cada diccionario se agrega a la lista y devuelve esa lista.
GUARDAR DATOS EN ARCHIVO DE EXCEL
Para guardar los datos, con cada clase se crea una instancia. En la programación orientada a objetos (OOP), una instancia es un objeto específico creado a partir de una clase. Representa una entidad individual con su propio conjunto único de atributos, basado en la estructura definida por la clase. Las instancias permiten el uso de métodos y el acceso a datos encapsulados dentro de la clase, lo que permite la interacción y manipulación de ese objeto en particular. Sabiendo qué es una instancia, y cada método (función) de la instancia de la empresa devuelve una lista de diccionarios. Primero creo las hojas con el nombre de la empresa, luego las columnas de la primera fila como nombre, logotipo, ciudad, ubicación, precio, área y etc, con un primer bucle FOR, empiezo a iterar sobre una lista, cada componente de la lista es un diccionario, cuando accedo al diccionario, con otro bucle FOR tomo el valor de cada elemento y escribo celda por celda hasta completar el fila, es decir, cada diccionario equivale a una fila completa, y cada valor corresponde a una columna, y este proceso lo haríamos con cada empresa.
Después de todo este proceso, procedo a verificar y corregir los datos, limpiando los datos en el excel, decidí guardar este archivo corregido para mostrar las diferencias, porque trato de descartar datos de manera general para cada proyecto de sitio web, pero a veces un proyecto en particular tiene una breve diferencia en la estructura y el bot descarta datos incorrectos, aquí la importancia de verificar lo que se eliminó.
PUBLICANDO LOS PROYECTOS
Del archivo de Excel con los datos limpios y corregidos, el siguiente paso es conseguir las coordenadas cardinales de cada proyecto para ubicarlos en el mapa, para lograr esto, me apoyo en la api de Google Maps, donde dejo una descripción del nombre del conjunto, la la ciudad y el departamento que es Atlántico para todos, consigo la latitud y longitud de cada proyecto, y después los junto con los datos del archivo de Excel dentro de otro archivo .csv, con el objetivo que al momento de enviar los datos a la House Finder API sea mucho mas sencillo y eficiente.
Finalmente, el último paso de este proyecto es agregar todos los datos extraídos a la base de datos, ese es el objetivo principal de este proyecto, usando House Finder API para llenar la base de datos. Para este paso, dentro de un bucle FOR, el programa primero lee dentro del archivo .csv fila por fila, cada valor se guarda dentro de un diccionario, donde las llaves son los parámetros de la base de datos y los valores son los datos que contiene cada fila del archivo .csv, utilizamos un post request a la ruta /api/v1/add-project así se agregan los datos al servidor de House Finder mediante la api.
CONTENEDORIZACIÓN
La contenedorización ofrece varias ventajas para la implementación de aplicaciones. Permite entornos consistentes en desarrollo, pruebas y producción, lo que reduce los problemas de compatibilidad. Los contenedores son livianos y portátiles, lo que permite una utilización eficiente de los recursos y tiempos de inicio más rápidos. Facilitan la escalabilidad y la orquestación, lo que facilita la gestión de aplicaciones complejas. Además, los contenedores mejoran la seguridad al aislar las aplicaciones, minimizando el riesgo de vulnerabilidades en todo el sistema. En general, la contenedorización agiliza el desarrollo y la implementación, mejorando la flexibilidad y la confiabilidad.