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.

Obtener datos de las listas de éxitos de Spotify

Quiero extraer datos de Spotify Charts para mis proyectos de Big Data, pero como Spotify cambió recientemente, no permite a los usuarios ver las listas sin iniciar sesión, mi código en python ya no funciona como antes, ya que https://charts.spotify.com/ me redirige a su página principal en lugar del enlace donde quiero extraer los datos.
¿Hay alguna forma de evitar esto? Gracias.
Este es mi código en python:

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una posible forma de resolver este problema es utilizar un web scraper que pueda manejar cookies y autenticación. Una opción popular para esto es Selenium.

    En lugar de utilizar requests para obtener el contenido HTML, puedes utilizar un webdriver de Selenium para abrir la página de Spotify Charts, iniciar sesión con tu cuenta de Spotify y luego extraer los datos como antes.

    Aquí tienes un ejemplo de cómo modificar tu código para utilizar Selenium:

    from bs4 import BeautifulSoup
    from selenium import webdriver
    from webdriver_manager.firefox import GeckoDriverManager
    
    ###obtener todo el contenido de la home_page
    
    url='https://charts.spotify.com/charts/view/regional-global-weekly/latest'
    driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())  # o utilizar otro controlador de navegador
    driver.get(url)
    
    # Iniciar sesión en Spotify
    login_button = driver.find_element_by_xpath('//button[text()="Iniciar sesión"]')
    login_button.click()
    email_input = driver.find_element_by_name('username')
    email_input.send_keys('tu_email')  # reemplaza con tu email de inicio de sesión de Spotify
    password_input = driver.find_element_by_name('password')
    password_input.send_keys('tu_contraseña')  # reemplaza con tu contraseña de inicio de sesión de Spotify
    login_button2 = driver.find_element_by_id('login-button')
    login_button2.click()
    
    # Esperar a que se cargue la página
    driver.implicitly_wait(20)  # aumenta el tiempo de espera según sea necesario
    
    # Obtener el contenido HTML y extraer los datos
    soup=BeautifulSoup(driver.page_source, "html.parser")
    table=soup.find('table', 'Table__TableElement-hzsdh5-0 dKzsET ChartsTable__StyledTable-sc-1ye7294-5 bovxiZ')
    links = table.find_all('a')
    print(links)
    

    Este código debería abrir una ventana del navegador Firefox, iniciar sesión en tu cuenta de Spotify, navegar a la página de Charts y extraer los enlaces como antes.

    Ten en cuenta que necesitarás tener una cuenta de Spotify y proporcionar tus credenciales de inicio de sesión en el código para que esto funcione. Además, ten en cuenta que hacer web scraping puede violar los términos de servicio de Spotify, así que utiliza este código bajo tu propio riesgo.

Comments are closed.