es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué la extracción de datos de Yahoo Finance con Python está imprimiendo continuamente el mismo valor?

import time
import requests
from bs4 import BeautifulSoup


while True:
    url = "https://finance.yahoo.com/quote/ETH-USD?p=ETH-USD"

    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')

    price = soup.find_all(
        'div', {'class': 'D(ib) Mend(20px)'})[0].find().text

    print("Precio de Ethereum: " + price)
    time.sleep(1)

¿Por qué esto imprime el mismo valor continuamente? Debería cambiar, según lo que sé, pero no está sucediendo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Este código imprime continuamente el mismo valor porque utiliza la técnica de web scraping para extraer el precio de Ethereum del sitio web de Yahoo Finance, y el código se ejecuta en un bucle infinito. El bucle envía constantemente una solicitud al sitio web, extrae el valor del elemento del precio, y luego espera 1 segundo antes de repetir el proceso.

    Dado que Yahoo Finance actualiza el precio de Ethereum solo cada pocos segundos, es posible que el bucle obtenga el mismo valor varias veces seguidas. Además, si hay problemas de conexión o demoras en la red, es posible que el código imprima repetidamente el mismo valor.

    Para hacer que el código imprima valores cambiantes, puedes modificarlo para almacenar el valor anterior del precio y verificar si ha cambiado antes de imprimirlo. Esto se puede hacer agregando las siguientes líneas de código:

    prev_price = None
    
    while True:
        url = "https://finance.yahoo.com/quote/ETH-USD?p=ETH-USD"
    
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'lxml')
    
        price_element = soup.find_all('div', {'class': 'D(ib) Mend(20px)'})[0]
        price = price_element.find().text
    
        if price != prev_price:
            prev_price = price
            print("Precio de Ethereum: " + price)
    
        time.sleep(1)
    

    En este código modificado, el precio anterior se establece inicialmente como None. Dentro del bucle, el código verifica si el precio actual es diferente al precio anterior. Si es así, imprime el precio actual y actualiza la variable del precio anterior. Esto garantiza que el código imprima solo cuando el precio cambie.

Comments are closed.