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.

Web Scraping un sitio usando Selenium – cómo ‘NO’ descargar un archivo de Excel

Estoy tratando de extraer información de un sitio web utilizando Selenium.
https://media.japanmetaldaily.com/market/list/

Quiero extraer datos solo para algunos metales y agregarlos en un único archivo de Excel, sin embargo, en este sitio web los datos no están realmente en la página web. Cuando hago clic en el href, se descarga directamente los datos como un archivo de Excel. La fuente de datos que se obtiene del href está prohibida.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, en este escenario no es posible extraer los datos directamente del href utilizando técnicas de web scraping ya que la fuente de datos está prohibida. La única solución para extraer los datos es descargar los archivos de Excel y luego manipularlos.

    Sin embargo, para automatizar el proceso de descarga de los archivos de Excel sin necesidad de intervención manual, puedes usar Selenium para simular el clic en el href, lo que iniciará la descarga del archivo de Excel. Una vez que la descarga esté completa, puedes usar la biblioteca pandas de Python para leer los archivos de Excel y concatenar los datos en un solo dataframe.

    Para lograr esto, puedes seguir los siguientes pasos:

    1. Usa Selenium para automatizar el clic en el href de cada metal del cual deseas extraer datos. Por ejemplo:
    from selenium import webdriver
    
    driver = webdriver.Chrome() # o cualquier otro controlador
    driver.get("https://media.japanmetaldaily.com/market/list/")
    
    elem = driver.find_element_by_link_text("異形棒鋼_直送_SD295_19ミリ")
    elem.click()
    
    # espera a que la descarga se complete
    # ...
    
    # repite para otros metales
    
    1. Una vez que hayas descargado todos los archivos de Excel, usa pandas para leerlos y concatenar los dataframes en un solo dataframe. Por ejemplo:
    import glob
    import pandas as pd
    
    # usa glob para obtener una lista de todos los archivos de Excel descargados
    files = glob.glob("/ruta/a/los/archivos/descargados/*.xls")
    
    dfs = []
    for file in files:
        df = pd.read_excel(file)
        dfs.append(df)
    
    # concatena los dataframes
    result = pd.concat(dfs, ignore_index=True)
    

    Ten en cuenta que es posible que necesites ajustar el código para que coincida con las URL y rutas de archivo específicas de tu caso de uso. Además, ten en cuenta que el web scraping puede estar sujeto a consideraciones legales y éticas, así que asegúrate de tener los permisos necesarios y cumplir con las regulaciones aplicables.

Comments are closed.