[ Foro de Python ]

Coger datos de api esios luz

25-Aug-2024 12:38
Alex Alejandro
0 Respuestas

Hola,

Por favor, te comento un poco porque he probado hacer scraping, tambien con
codigo html y javascript. He probado con una herramienta de github,
creo que tambien he mirado phyton.

Necesitaria los **precios hora** como en esta web www.tarifaluzhora.es, y tambien una **grafica** que tiene abajo.

Probé este codigo html en mi web que me dijo la ia, pero no funciona.

Qué habría que hacer?

Un saludo, gracias.
----




<!DOCTYPE html>
<html lang="es">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Precios de la Luz</title>
   <style>
       table {
           width: 100%;
           border-collapse: collapse;
       }
       th, td {
           border: 1px solid #ddd;
           padding: 8px;
           text-align: center;
       }
       th {
           background-color: #f2f2f2;
       }
       .highlight {
           color: red; /* Cambia esto según sea necesario para el
precio más alto */
       }
   </style>
</head>
<body>
   <h1>Precios de la Luz</h1>
   Precio ahora mismo: <strong id="current-price">Cargando...</strong><br>
   Precio medio del día: <strong id="average-price">Cargando...</strong><br>
   Precio más bajo del día: <strong id="lowest-price"
class="highlight">Cargando...</strong><br>
   Precio más alto del día: <strong id="highest-price"
class="highlight">Cargando...</strong><br>

   <h2>Precios por Hora</h2>
   <table id="price-table">
       <thead>
           <tr>
               <th>Hora</th>
               <th>Precio (€/kWh)</th>
           </tr>
       </thead>
       <tbody>
           <!-- Aquí se añadirán dinámicamente las filas de precios
por hora -->
       </tbody>
   </table>
   <p>Datos extraídos de la Red Eléctrica de España. Precio medio del
día: Media aritmética de los precios del día en función del tipo de
tarifa.</p>

   <script>
       async function fetchPrices() {
           const date = new Date();
           const startDate = date.toISOString().split('T')[0]; //
Fecha de hoy en formato YYYY-MM-DD
           const endDate = date.toISOString().split('T')[0]; // Fecha
de hoy en formato YYYY-MM-DD

           const url =
`https://api.esios.ree.es/indicators/1013?start_date=${startDate}T00:00:00&end_date=${endDate}T23:59:59`;

           try {
               const response = await fetch(url, {
                   headers: {
                       'Authorization': 'Token
mi token' //
Tu token
                   }
               });

               if (!response.ok) {
                   throw new Error('Error en la red');
               }

               const data = await response.json();

               // Obtener precios y actualizar el HTML
               const currentPrices = data.indicator.values[0]; // El
primer valor es el actual
               document.getElementById('current-price').innerText =
`${currentPrices.value}€/kWh`;
               document.getElementById('average-price').innerText =
`${currentPrices.average}€/kWh`;
               document.getElementById('lowest-price').innerText =
`${currentPrices.min}€/kWh`;
               document.getElementById('highest-price').innerText =
`${currentPrices.max}€/kWh`;

               // Actualiza la tabla de precios por hora
               const tableBody =
document.getElementById('price-table').getElementsByTagName('tbody')[0];
               tableBody.innerHTML = ''; // Limpiar tabla antes de
agregar nuevas filas

               data.indicator.values.forEach((value) => {
                   const row = document.createElement('tr');
                   const hour = new
Date(value.datetime).toLocaleTimeString([], { hour: '2-digit', minute:
'2-digit' });
                   row.innerHTML =
`<td>${hour}</td><td>${value.value}€/kWh</td>`;
                   tableBody.appendChild(row);
               });
           } catch (error) {
               console.error('Error al fetch los precios:', error);
           }
       }

       // Llama a la función al cargar la página
       fetchPrices();
   </script>
</body>
</html>





----

Un saludo, gracias.




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...