Este repositorio contiene los scripts y recursos creados por el equipo de Data para el proyecto Reffindr, enfocándose en la extracción, transformación y carga (ETL) de datos inmobiliarios, así como la creación de una API REST con Flask.
- Web scraping con Flask API: Extrae datos de propiedades inmobiliarias desde Argenprop.
- ETL automatizado: Procesa los datos extraídos desde la API, los transforma y los carga en una base de datos AWS RDS.
- Modelo de datos: Estructura optimizada y documentada en un diagrama de relación (ER Diagram).
i004-reffindr-back-python/
├── app.py # API desarrollada con Flask para scraping
├── etl.py # codigo del ETL
├── etl.ipynb # Notebook de ETL: extracción, transformación y carga
├── functions/ # Funciones del ETL reutilizables
├── scrapper/ # Código específico para scraping
├── static/ # Código de swagger para la API
├── Data_ficticia/ # Datos ficticios creado por IA para llenar el ERD
├── Dockerfile # Configuración de Docker para contenedores
├── requirements.txt # Dependencias necesarias para ejecutar el proyecto
├── ERD DIAGRAM ... .pdf # Modelo de base de datos ERD
├── README.md # Documentanción del repositorio
└── compose.yaml # Configuración de Docker Compose
Primero, clona este repositorio en tu máquina local:
git clone https://github.com/igrowker/i004-reffindr-back-python.git
cd i004-reffindr-back-python
Crea y activa un entorno virtual para mantener las dependencias aisladas:
python -m venv .venv # Crea el entorno virtual
.venv\Scripts\activate # Lo activa
Asegúrate de tener Python 3.9+ instalado. Luego, ejecuta:
pip install -r requirements.txt
Ejecutar la API Localmente Inicia el servidor Flask localmente con:
python app.py
Este proyecto expone los siguientes endpoints para interactuar con la API:
- Método:
GET
- Descripción: Proporciona documentación interactiva generada automáticamente con Swagger para explorar y probar la API.
-
Método:
GET
-
Descripción: Realiza scraping de propiedades en Argenprop basadas en los parámetros proporcionados.
-
Parámetros:
pais
: Especifica el país de las propiedades a obtener (por ejemplo, "argentina").limite
: Establece el número máximo de propiedades a obtener (por ejemplo, "10").
-
Ejemplo de solicitud: http://127.0.0.1:5000/argenprop?pais=argentina&limite=10 <---- Puedes usar postman para testear la API
Nota: Puedes utilizar estas plataformas para subir la API utilizando la imagen de Docker y este de forma online: Render, Azure App Service o AWS como se realizo en este proyecto.
Este repositorio incluye un proceso ETL automatizado que realiza las siguientes tareas:
- Extracción: Obtiene datos desde la API alojada en AWS.
- Transformación: Procesa y limpia los datos utilizando el archivo
etl.py
. - Carga: Envía los datos transformados a una base de datos, utilizando credenciales almacenadas en variables de entorno.
El proyecto utiliza una base de datos alojada en AWS RDS pero puedes configurar tu propia base de datos con tus credenciales. Para esto, asegúrate de definir las siguientes variables en un archivo .env
. Ejemplo:
API_URL # Url de la API
DB_USER=tu_usuario # Usuario de la base de datos
DB_PASSWORD=tu_contraseña # Contraseña de la base de datos
DB_HOST=tu_host # Dirección del host (ejemplo: localhost o una URL de RDS)
DB_NAME=tu_basededatos # Nombre de tu base de datos
DB_SCHEMA=tu_esquema # Nombre del esquema
El archivo ERD DIAGRAM REFFINDR TEAM DATA.pdf contiene el diseño del modelo relacional, incluye todas las tablas principales para enriquecer la base de datos.
- Lenguaje: Python
- Framework API: Flask
- Base de Datos: AWS RDS
- Web Scraping: BeautifulSoup, Requests
- Manejo de Datos: Numpy, Pandas
- Libreria Python - Base de Datos: SQLAlchemy, psycopg2-binary
- Otros: Flask-Swagger-UI para la documentación de la API