2012-02-16 19 views
5

Estoy intentando aprender a leer en un archivo de acceso/zip que tiene una url https en R. Esto es parte de un proyecto de aprendizaje de mapeo más grande que estoy emprendiendo para ramificar mis habilidades R encontraron HERE(voy a vincular esta publicación también).error de archivo zip al leer en una url https

Este era el plan, pero me da un error de la getUrl y no estoy seguro de por qué:

require(RCurl) 
NYSdemo <- getURL("https://reportcards.nysed.gov/zip/SRC2010.zip") 
temp <- tempfile() 
download.file(NYSdemo, temp) 
data <- read.table(unz(temp, "a1.dat")) 
unlink(temp) 

ERROR:

> NYSdemo <- getURL("https://reportcards.nysed.gov/zip/SRC2010.zip") 
Error in function (type, msg, asError = TRUE) : 
    SSL certificate problem, verify that the CA cert is OK. Details: 
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 

Como dije esta es una proyecto de aprendizaje muchas de las técnicas que estoy usando aquí no me resultan familiares.

El archivo zip real Estoy intentando descargar es HERE

Tal vez esto no es en realidad un problema de programación, pero algo mal con el URL que no permite getUrl ser utilizado en ella.

Gracias de antemano por sus ideas y ayuda.

EDIT: Me trató la ssl.verifypeer pero conseguir otro error

> NYSdemo <- getURL("https://reportcards.nysed.gov/zip/SRC2010.zip", 
+ ssl.verifypeer = FALSE) 
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) : 
    embedded nul in string: 'PK\003\004\024\0\0\0\b\0i[j>¶U#]tó\036\005\0 ÷- {And it continues} 
> 

EDIT 2: Por Sugerencias de Vincent

> NYSdemo <- getURL("http://reportcards.nysed.gov/zip/SRC2010.zip") 
> download.file(NYSdemo, temp) 
Error in download.file(NYSdemo, temp) : unsupported URL scheme 
> 
> NYSdemo <- getBinaryURL("https://reportcards.nysed.gov/zip/SRC2010.zip") 
Error in function (type, msg, asError = TRUE) : 
    SSL certificate problem, verify that the CA cert is OK. Details: 
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed 
> 
> url.exists("https://reportcards.nysed.gov/zip/SRC2010.zip") 
[1] FALSE #not sure why this is because it works to type into url bar of browser 

Esta información me está dando lugar a cree que el problema es algo extraño sobre el archivo comprimido. Ideas?

+0

El mensaje de error dice que no se pudo verificar la identidad del sitio web. Puede intentar eludir esos controles reemplazando 'https' por' http' (pero la conexión se vuelve insegura). Es posible que también deba reemplazar 'getURL' con' getBinaryURL'. –

+0

@Vincent Zoonekynd Gracias por la respuesta. Intenté tus sugerencias (ver EDIT 2) pero no tuve suerte. –

+0

Si ya no tiene un mensaje de error después de 'getURL', funcionó, y el contenido del archivo está en la variable' NYSdemo'. 'download.file' hace lo mismo que' getURL' (por lo que no necesita ambos), y espera una URL como argumento: 'download.file (" http: // ... ")'. –

Respuesta

5

Si bien no me creyó en TS, probé mi solución con la ayuda de quien sea que dio la idea de ssl.verify.

bin <- getBinaryURL("https://reportcards.nysed.gov/zip/SRC2010.zip", 
        ssl.verifypeer=FALSE) 
con <- file("schools.zip", open = "wb") 
writeBin(bin, con) 
close(con) 

Dado que el archivo es grande, me tomó un tiempo para descargar el binario, pero lo escribió verdadera rápido. Asegúrese de cerrar la conexión para poder abrir su archivo ZIP posteriormente. Pude abrir tanto el PDF como la base de datos de Access.

Cuestiones relacionadas