Proyecto de WebScraping a Promiedos utilizando python para traer, parsear y almacenar los datos en archivos .json para luego manipularlos con Node.
-
- Html
- CSS
- Flex
- Grid
- Javascript
-
- NodeJS
- Express
- child_process
- EJS view Engine
- fs
- Python
- beautifulsoup4
- requests
- json
- JSON
- NodeJS
El proyecto cuenta con dos scripts hechos en python que se encargan de llevar a cabo el scraping:
- getMatches.py: Se encarga de hacer una request a la página principal de PROMIEDOS para rescatar los datos del fixture del día.
- getTables.py: Cuenta con un arreglo de paises que recorre para rescatar las tablas de la liga de cada país.
Ambos archivos parsean los datos recibidos y guardan la información obtenida en los archivos ubicados en /src/data.
Este proceso es ejecutado por index.js mediante un exec() de la biblioteca "child_process", y está diseñado para repetirse mediante un timer, de preferiblemente un minuto. Esta parte del código está comentada, para no saturar los servidores de Promiedos. Para que funcione solo debe descomentarla.
Cuando un cliente hace una request al servidor, éste se encarga de obtener los datos de los archivos json mediante la función fs.readFileSync() del módulo "fs", rescatando el fixture y la liga que haya elegido el usuario. Posteriormente se hace un render dinámico con la información obtenida haciendo uso del motor de vistas "ejs".
Cabe aclarar que aunque se actualicen los json cada 60 segundos, la página no ofrece un servicio 100% "live", ya que no existe una conexión persistente entre el servidor y el cliente. Por eso, si hay algún gol de un partido en vivo, el cliente no se enterará a menos que recargue la página.
Debe tener instalado el intérprete de python y las bibliotecas requests y beautifulsoup4
Una vez instalado python, correr:
pip install beautifulsoup4
pip install requests
O, si usas un entorno virtual:
python -m pip install beautifulsoup4
python -m pip install requests
Posteriormente, ejecutar una terminal en la carpeta del proyecto y ejecutar:
npm install
Para levantar el servidor, correr en la terminal:
npm run start
Luego de esto se levantará el servidor en el puerto 3005, que puedes cambiar a tu antojo.
├──index.js # Entrypoint
├──package.json
├──package-lock.json
├──README.md
├──.gitignore
├──node_modules
├──public
├──styles
├──index.css
├──src
├──data
├──tables_data.json
├──matches_data.json
├──scripts
├──getMatches.py
├──getTables.py
├──views
├──home.ejs
- Toda la información que recopila este proyecto pertenece a promiedos.
- Este proyecto no tiene la intención de infringir derechos de autor ni violar los términos de servicio del sitio web mencionado.
- La información obtenida se utiliza exclusivamente para fines personales y no será utilizada con fines comerciales.