6

「同意する」ボタンを押して Cookie を保存する必要がある https ページからファイルをダウンロードしようとしています。この答えがどこかで明らかである場合、私の謝罪..

Chrome で直接 Web ページを開いて [同意する] をクリックすると、ファイルのダウンロードが自動的に開始されます。

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

この例を複製しようとしましたが、hangseng Web サイトが実際に Cookie/認証を保存しているとは思わないため、その例だけで十分かどうかはわかりません。

さらに、SSL は認証を複雑にしていると思います。getURL() 呼び出しには cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")) のような証明書の仕様が必要になると思うからです。

私は RCurl の初心者すぎて、この Web サイトがかなり難しいのか、それとも明らかな何かが欠けているだけなのかを知ることができません。

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

4

1 に答える 1

13

httrこれは、 Cookieとhttpsがシームレスに機能するようにすべてを設定するため、少し簡単です。

Cookieを生成する最も簡単な方法は、「同意する」フォームが生成する情報を手動で投稿することにより、サイトにCookieを生成させることです。次に、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")
于 2012-11-03T14:20:24.883 に答える