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.

Descargar csv desde la URL en R.

Estoy tratando de descargar un archivo csv desde esta URL https://pip.ipex.it/PipWa/Front/GetCsv.

Cuando uso el siguiente método:

url <- "https://pip.ipex.it/PipWa/Front/GetCsv"
destfile <- "C://jamesbrown/pipx.csv"
download.file(url, destfile)

Entonces obtengo este mensaje:

trying URL 'https://pip.ipex.it/PipWa/Front/GetCsv'
Content type 'text/csv' length unknown
downloaded 0 bytes

También he intentado de esta otra manera:

a <- read.csv("https://pip.ipex.it/PipWa/Front/GetCsv")

Pero esto es lo que obtengo:

Error in read.table(file = file, header = header, sep = sep, quote = quote,  :
no lines available in input

¿Alguna sugerencia?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en el servidor, ya que no proporciona el tamaño del archivo en el encabezado de la respuesta, lo que provoca que la descarga falle. Una posible solución sería utilizar el paquete httr para hacer una solicitud a la URL y recuperar el archivo como un objeto “raw”, y luego guardarlo en el disco.

    Aquí tienes un ejemplo de código para lograr esto:

    library(httr)
    
    url <- "https://pip.ipex.it/PipWa/Front/GetCsv"
    destfile <- "C:/jamesbrown/pipx.csv"
    
    # Hacer una solicitud GET a la URL y recuperar la respuesta como un objeto "raw"
    response <- GET(url, write_disk(destfile, overwrite = TRUE))
    
    # Verificar si la solicitud fue exitosa (código de estado 200)
    if (status_code(response) == 200) {
      message("Archivo descargado correctamente.")
    } else {
      stop("No se pudo descargar el archivo.")
    }
    

    Este código debería descargar el archivo CSV en la ubicación especificada sin problemas, incluso si el servidor no proporciona el tamaño del archivo en el encabezado de la respuesta.

Comments are closed.