2012-02-16 25 views
5

Tôi đang cố gắng tìm hiểu cách đọc trong tệp truy cập/zip có url https vào R. Đây là một phần của dự án học lập bản đồ lớn hơn mà tôi đang thực hiện cho chi nhánh kỹ năng R của tôi được tìm thấy HERE(Tôi cũng sẽ liên kết bài đăng này ở đó).lỗi tệp zip khi đọc trong url https

Đây là kế hoạch nhưng tôi nhận được một lỗi từ getURL và tôi không chắc chắn lý do tại sao:

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) 

LỖI:

> 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 

Như tôi đã nói đây là một dự án học tập rất nhiều các kỹ thuật tôi đang sử dụng ở đây tôi không quen thuộc với tất cả.

Các tập tin zip thực tế tôi đang cố gắng để tải về là HERE

Có lẽ đây không phải là thực sự là một vấn đề lập trình nhưng một cái gì đó sai với URL mà không cho phép getURL được sử dụng trên nó.

Cảm ơn bạn trước ý tưởng và trợ giúp của bạn.

EDIT: Tôi đã cố gắng các ssl.verifypeer nhưng nhận được một lỗi

> 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: mỗi Gợi ý 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 

Thông tin này được dẫn dắt tôi đến tin rằng vấn đề là một cái gì đó kỳ lạ về các tập tin zip. Ý tưởng?

+0

Thông báo lỗi cho biết không thể xác minh danh tính của trang web. Bạn có thể thử bỏ qua các kiểm tra đó bằng cách thay thế 'https'by' http' (nhưng kết nối trở nên không an toàn). Bạn cũng có thể cần phải thay thế 'getURL' bằng' getBinaryURL'. –

+0

@Vincent Zoonekynd Cảm ơn bạn đã phản hồi. Tôi đã thử các đề xuất của bạn (xem EDIT 2) nhưng chưa có may mắn. –

+0

Nếu bạn không còn thông báo lỗi sau 'getURL', nó hoạt động và nội dung của tệp nằm trong biến' NYSdemo'. 'download.file' thực hiện tương tự như' getURL' (vì vậy bạn không cần cả hai), và hy vọng một URL làm đối số: 'download.file (" http: // ... ")'. –

Trả lời

5

Trong khi bạn không tin tôi qua TS, tôi đã thử nghiệm giải pháp của mình với sự trợ giúp của bất kỳ ai nó đã đưa ra ý tưởng 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) 

Kể từ khi tập tin là lớn, nó đã cho tôi một thời gian để tải về nhị phân, nhưng nó đã viết nó thực nhanh. Đảm bảo đóng kết nối để bạn có thể mở tệp ZIP của mình sau đó. Tôi đã có thể mở cả cơ sở dữ liệu PDF và Access.

Các vấn đề liên quan