- 📝 Sobre el Proyecto
- ⚡ Características principales
- ⛔ Temas actuales
- 🔧 Posibles mejoras
- 👨💻 Tecnologías utilizadas
- ⚙ Instalación y uso
- 📂 Estructura de la carpeta
- 🧪 Realización de pruebas
- 🌟 Estado del proyecto
Web Scraper Fusion es un sistema backend desarrollado con Django y MySQL que permite realizar búsquedas en PubMed, guardar artículos seleccionados y gestionar artículos duplicados. El objetivo principal es facilitar la recopilación y organización de información científica.
El sistema incluye las siguientes funcionalidades:
- Búsqueda de artículos en PubMed.
- Gestión de artículos seleccionados.
- Registro de artículos duplicados.
- Acceso directo a los enlaces de los artículos.
El proyecto sigue la metodología Scrum y está organizado en GitHub. Incluye pruebas unitarias e integrales para garantizar la confiabilidad del código.
- ✅ Búsqueda de artículos en PubMed utilizando Selenium.
- ✅ Gestión de artículos seleccionados y duplicados.
- ✅ Columna "Seleccionar enlace" para acceder directamente a los artículos.
- ✅ Manejo de excepciones para artículos duplicados.
- ✅ Base de datos estructurada con las siguientes tablas:
SelectedArticle
: Artículos seleccionados.DuplicateArticle
: Artículos duplicados.
- ✅ Uso de sesiones para almacenar temporalmente los resultados de búsqueda.
- ✅ Interfaz de usuario con Bootstrap para una experiencia amigable.
- ✅ Scripts para creación de bases de datos y migración de datos antiguos.
- ✅ Documentación del sistema y del código en GitHub.
- ❌ El manejo de excepciones podría ser más robusto.
- ❌ La funcionalidad de búsqueda no incluye más de 1 URL.
- ❌ No se han implementado pruebas unitarias completas para todas las vistas.
- ✅ Implementar paginación en los resultados de búsqueda.
- ✅ Mejorar la gestión de excepciones para una retroalimentación más clara.
- ✅ Optimizar el rendimiento del scraping para búsquedas más rápidas.
- ✅ Agregar pruebas unitarias para todas las vistas y modelos.
- ✅ Permitir exportar los artículos seleccionados a formatos como CSV o Excel.
- Backend: Django (Python), Selenium.
- Base de datos: MySQL.
- Interfaz: HTML, CSS, Bootstrap.
- Control de versiones: Git / GitHub.
- Metodología: Scrum.
- Pruebas: Pruebas unitarias y de integración con el framework de Django.
- Librerías útiles: Scrapy, Requests, Selenium.
- Gestión del proyecto: GitHub.
git clone https://github.com/tu-usuario/webscraper-fusion.git
cd webscraper-fusion
Crear y activar un entorno virtual:
Windows:
python -m venv venv
venv\Scripts\activate
Linux/Mac:
python -m venv venv
source venv/bin/activate
Instalar dependencias:
pip install -r requirements.txt
Asegúrate de tener MySQL instalado y configurado. Luego, crea un archivo .env
con las credenciales de tu base de datos:
touch .env
Contenido del archivo .env
:
mysql_username = 'tu_usuario'
mysql_password = 'tu_contraseña'
mysql_host = '127.0.0.1'
mysql_port = 3306
bbdd_name = 'bbdd_midi'
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Accede a la aplicación en: http://127.0.0.1:8000/
python manage.py scrape
PROYECTO_3_WEB_SCRAPER
├── logs
├── scraper
│ ├── __pycache__
│ ├── management
│ │ ├── commands
│ │ │ ├── __pycache__
│ │ │ ├── __init__.py
│ │ │ └── scrape.py
│ │ └── __init__.py
│ ├── migrations
│ ├── services
│ │ ├── __pycache__
│ │ └── __init__.py
│ ├── templates
│ │ ├── scraper
│ │ │ ├── login.html
│ │ │ └── logout_confirm.html
│ ├── tests
│ │ ├── __pycache__
│ │ ├── test_admin.py
│ │ ├── test_commands.py
│ │ ├── test_forms.py
│ │ ├── test_models.py
│ │ ├── test_services.py
│ │ ├── test_views.py
│ │ └── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── urls.py
│ ├── views.py
├── static
├── venv
├── webscraper_project
│ ├── __pycache__
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ ├── .env
│ ├── .gitignore
│ ├── db.sqlite3
│ ├── manage.py
│ ├── Readme.md
│ ├── requirements.txt
│ ├── run_tests.py
│ └── scraper.log
Se realizan pruebas unitarias para forms
, views
, admin
, models
, urls
, scrapy
en services
y commands
. Los comandos individuales para ejecutar las pruebas son:
python manage.py test scraper.tests.test_admin
python manage.py test scraper.tests.test_forms
python manage.py test scraper.tests.test_models
python manage.py test scraper.tests.test_services
python manage.py test scraper.tests.test_views
python manage.py test scraper.tests.test_commands
Además, se ha generado un comando a modo de prueba para ejecutar todas los tests, excepto test_commands
(que requiere interacción con el usuario):
python run_tests.py
Todos los comandos de testeo pueden llevarse a cabo con:
python manage.py test scraper/tests
El proyecto está en desarrollo. Se han implementado las funcionalidades principales, pero aún hay áreas que requieren mejoras y optimización.
Si este proyecto te resulta útil, ¡marca el repositorio con una estrella en GitHub! ⭐