web-dev-qa-db-ja.com

download.file()を使用してHTTPSからファイルをダウンロードします

以下に示すように、download.file()を使用してオンラインデータをRに読み取りたいです。

_URL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
download.file(URL, destfile = "./data/data.csv", method="curl")
_

誰かが私にsetInternet2(TRUE)行を追加するように提案しましたが、それでもまだ機能しません。

私が得るエラーは次のとおりです:

_Warning messages:
1: running command 'curl  "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"  -o "./data/data.csv"' had status 127 
2: In download.file(URL, destfile = "./data/data.csv", method = "curl",  :
  download had nonzero exit status
_

あなたの助けに感謝。

29
useR

RCurlパッケージを試すのが最も簡単かもしれません。パッケージをインストールして、次を試してください。

# install.packages("RCurl")
library(RCurl)
URL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
x <- getURL(URL)
## Or 
## x <- getURL(URL, ssl.verifypeer = FALSE)
out <- read.csv(textConnection(x))
head(out[1:6])
#   RT SERIALNO DIVISION PUMA REGION ST
# 1  H      186        8  700      4 16
# 2  H      306        8  700      4 16
# 3  H      395        8  100      4 16
# 4  H      506        8  700      4 16
# 5  H      835        8  800      4 16
# 6  H      989        8  700      4 16
dim(out)
# [1] 6496  188

download.file("https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv",destfile="reviews.csv",method="libcurl")
41

2014年11月現在の更新は次のとおりです。method='curl'を設定するとうまくいきました(method='auto'はそうではありません)。

例えば:

# does not work
download.file(url='https://s3.amazonaws.com/tripdata/201307-citibike-tripdata.Zip',
              destfile='localfile.Zip')

# does not work. this appears to be the default anyway
download.file(url='https://s3.amazonaws.com/tripdata/201307-citibike-tripdata.Zip',
              destfile='localfile.Zip', method='auto')

# works!
download.file(url='https://s3.amazonaws.com/tripdata/201307-citibike-tripdata.Zip',
              destfile='localfile.Zip', method='curl')
12
arvi1000

私は次のコードで成功しました:

url = "http://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
x = read.csv(file=url)

最初のプロトコルはRでサポートされていないようであるため、プロトコルをhttpsからhttpに変更したことに注意してください。

4
Baumann

RCurlを使用する場合、GetURL()関数でSSLエラーが発生し、GetURL()の前にこれらのオプションを設定します。これにより、CurlSSL設定がグローバルに設定されます。

拡張コード:

install.packages("RCurl")
library(RCurl)
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))   
URL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
x <- getURL(URL)

R3.1.0を使用して、Windows 7 64ビットで動作しました!

4
user3762466

UseR(元の質問)とまったく同じ問題を抱えていましたが、私もWindows 7を使用しています。提案されたすべての解決策を試しましたが、機能しませんでした。

次のようにして問題を解決しました。

  1. Rコンソールの代わりにRStudioを使用します。

  2. Rのバージョン(3.1.0から3.1.1)をアクチュアライズして、ライブラリRCurlがその上で正常に動作するようにします。 (私のシステムは64ビットですが、現在R3.1.1 32ビットを使用しています)。

  3. URLアドレスをhttps(安全な接続)として入力し、/バックスラッシュの代わりに\\

  4. 設定method = "auto"

それは今私のために働いています。次のメッセージが表示されるはずです。

Content type 'text/csv; charset=utf-8' length 9294 bytes
opened URL
downloaded 9294 by
2
JeromeROD

オンラインデータベースから大きなファイルを抽出するときに信頼できることがわかった代替手段としてcurlパッケージを提供します。最近のプロジェクトでは、オンラインデータベースから120個のファイルをダウンロードする必要がありましたが、転送時間が半分になり、download.fileよりもはるかに信頼性が高いことがわかりました。

#install.packages("curl")
library(curl)
#install.packages("RCurl")
library(RCurl)

ptm <- proc.time()
URL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
x <- getURL(URL)
proc.time() - ptm
ptm

ptm1 <- proc.time()
curl_download(url =URL ,destfile="TEST.CSV",quiet=FALSE, mode="wb")
proc.time() - ptm1
ptm1

ptm2 <- proc.time()
y = download.file(URL, destfile = "./data/data.csv", method="curl")
proc.time() - ptm2
ptm2

この場合、URLの大まかなタイミングでは、転送時間に一貫した差はありませんでした。私のアプリケーションでは、スクリプトでcurl_downloadを使用してWebサイトから120個のファイルを選択してダウンロードすると、ファイルごとの転送時間が2000秒から1000秒に短縮され、120ファイルでの信頼性が50%から2回に増加しました。スクリプトは、以前に尋ねた質問への回答に掲載されています。

2
user3838963

127はコマンドが見つからないことを意味します

あなたの場合、curlコマンドが見つかりませんでした。したがって、カールが見つかりませんでした。

CURLをインストール/再インストールする必要があります。それで全部です。 OSの最新バージョンを http://curl.haxx.se/download.html から取得します

インストールの前にRStudioを閉じます。

2
Muktadir

重いファイルでフォローしてみてください

library(data.table)
URL <- "http://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv"
x <- fread(URL)
1
zyduss

グローバルオプションを設定して、

options('download.file.method'='curl')
download.file(URL, destfile = "./data/data.csv", method="auto")

問題については、リンクを参照してください https://stat.ethz.ch/pipermail/bioconductor/2011-February/037723.html

1
akshat thakar