2012-11-02 31 views
6

httpsページから「同意する」ボタンを押してクッキーを保存する必要があるファイルをダウンロードしようとしています。この回答がどこかに明白であれば私の謝罪です。Rを使用して、クッキーを必要とするSSLページからZipファイルをダウンロードする方法

私はChromeでウェブページを直接開き、「同意する」をクリックするとファイルが自動的にダウンロードされます。

http://www.icpsr.umich.edu/cgi-bin/bob/zipcart2?path=SAMHDA&study=32722&bundle=delimited&ds=1&dups=yes

私はthis exampleを複製しようとしたが、私はhangsengのウェブサイトは、実際にクッキー/認証を保存することはないと思うので、その例としては、私が必要とするすべてであるべき場合、私は知りません。

さらに、getURL()コールではcainfo = system.file( "CurlSSL"、 "cacert.pem"、package = "RCurl"などの証明書の指定が必要になると思うので、SSLが認証を複雑にすると思います。 ))

私はこのウェブサイトがかなり難しいかどうかを知るにはあまりにも多くの初心者です。

ありがとうございました!

+0

RhelpからこのURLは有用である可能性がある:私はそれを保存したが、まだそれを必要としていない:[(LINK)](http://r.789695.n4.nabble.com/How-to-set -cookies-in-RCurl-td4632693.html) –

答えて

12

これは、httrでやや簡単です。クッキーとhttpsがシームレスに動作するようにすべて設定するためです。

クッキーを生成する最も簡単な方法は、「同意する」フォームが生成する情報を手作業で掲示することによって、サイトがあなたのために行うことです。次に、実際のファイルをダウンロードするための2回目の要求を行います。

library(httr) 
terms <- "http://www.icpsr.umich.edu/cgi-bin/terms" 
download <- "http://www.icpsr.umich.edu/cgi-bin/bob/zipcart2" 

values <- list(agree = "yes", path = "SAMHDA", study = "32722", ds = "", 
    bundle = "all", dups = "yes") 

# Accept the terms on the form, 
# generating the appropriate cookies 
POST(terms, body = values) 
GET(download, query = values) 

# Actually download the file (this will take a while) 
resp <- GET(download, query = values) 

# write the content of the download to a binary file 
writeBin(content(resp, "raw"), "c:/temp/thefile.zip") 
+0

"raw"パラメータはcontent()を中断させます。それがなくても動作します:) –

+0

あなたはhtth – hadley

+0

yupを更新する必要があると思います。 update.packages( 'httr')それを行った:) –

関連する問題