Este proyecto es una aplicación que realiza web scraping, desarrolla una API y visualiza los datos extraídos utilizando FastAPI, Selenium, y Seaborn.
- Web Scraping: Extrae datos de un sitio web utilizando Selenium.
- API REST: Implementa una API con FastAPI para exponer los datos scrapeados.
- Análisis de Datos: Procesa y visualiza los datos utilizando Pandas y Seaborn.
- Contenerización: Configurado para ejecutarse en un contenedor Docker.
- Python 3.11
- Chromedriver: Para Selenium. Asegúrate de tenerlo en tu PATH.
- Docker (opcional): Para contenerizar la aplicación.
-
Clonar el repositorio:
git clone https://github.com/FerretoDev/web-scraper-api-visualization.git cd web-scraper-api-visualization
-
Configurar el entorno virtual:
python -m venv .venv source .venv/bin/activate # En Windows usa .venv\Scripts\activate
-
Instalar las dependencias:
pip install -r requirements.txt
-
Configurar Chromedriver:
- Descarga Chromedriver desde su sitio oficial y asegúrate de que esté en el PATH.
-
Ejecutar la API localmente:
fastapi dev app/main.py
-
Acceder a los endpoints:
- GET /: Página de bienvenida.
- GET /scrape: Ejecuta el scraping y devuelve los datos extraídos.
Si prefieres ejecutar la aplicación en un contenedor Docker:
-
Construir la imagen Docker:
docker build -t web-scraper-api .
-
Ejecutar el contenedor:
docker run -d -p 8000:8000 web-scraper-api
-
Acceder a la aplicación:
- Visita
http://localhost:8000
para acceder a la API.
- Visita
web-scraper-api-visualization/
│
├── app/ # Código de la aplicación
│ ├── main.py # Archivo principal de FastAPI
│ ├── routes.py # Rutas y endpoints de la API
│ ├── scraping/ # Lógica de scraping y limpieza de datos
│ ├── api/ # Controladores de la API
│ └── utils/ # Configuraciones y utilidades
│
├── data/ # Almacena los datos extraídos y procesados
│
├── docs/ # Documentación adicional
│ ├── README.md # Explicación general del proyecto (este archivo)
│ └── tutorial.md # Tutorial detallado
│
├── tests/ # Pruebas automatizadas
│
├── notebooks/ # Notebooks para análisis exploratorio
│
├── requirements.txt # Dependencias del proyecto
├── Dockerfile # Configuración de Docker
└── .gitignore # Archivos ignorados en Git
Para ejecutar las pruebas unitarias:
pytest
Este proyecto permitió integrar diversas técnicas, desde la automatización del scraping hasta la creación de visualizaciones de datos. A lo largo del desarrollo, fue esencial asegurar la estabilidad del scraping, la eficiencia en el procesamiento de datos, y la creación de una API robusta.