2012-11-02 7 views
6

की आवश्यकता है। मैं एक https पृष्ठ से एक फ़ाइल डाउनलोड करने का प्रयास कर रहा हूं जिसके लिए "I सहमत" बटन को धक्का दिया जाना चाहिए और फिर कुकी को स्टोर करना होगा। माफ़ी माफ़ी अगर यह उत्तर कहीं स्पष्ट है ..एसएसएल पेज से ज़िप्ड फ़ाइल डाउनलोड करने के लिए आर का उपयोग कैसे करें, जिसके लिए कुकीज़

जब मैं सीधे क्रोम में वेब पेज खोलता हूं और "मैं सहमत हूं" पर क्लिक करता हूं - फ़ाइल स्वचालित रूप से डाउनलोड हो जाती है।

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"))

मैं आरसीआरएल के साथ शुरुआत करने वाला बहुत अधिक हूं, यह जानना कि यह वेबसाइट बहुत मुश्किल है या अगर मुझे कुछ स्पष्ट याद आ रही है।

धन्यवाद!

+0

Rhelp से इस यूआरएल उपयोगी हो सकता है: मैं इसे बचाया, लेकिन अभी तक यह आवश्यक नहीं है: [(लिंक)] (http://r.789695.n4.nabble.com/How-to-set -cookies-in-RCurl-td4632693.html) –

उत्तर

12

httr के साथ यह करना थोड़ा आसान है क्योंकि यह सबकुछ सेट करता है ताकि कुकीज और https सीमलेस रूप से काम कर सकें।

कुकीज़ उत्पन्न करने का सबसे आसान तरीका यह है कि साइट "मैन्युअल" फ़ॉर्म उत्पन्न करने वाली जानकारी को मैन्युअल रूप से पोस्ट करके साइट को आपके लिए करे। फिर आप वास्तविक फ़ाइल डाउनलोड करने के लिए दूसरा अनुरोध करते हैं।

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

"कच्चा" पैरामीटर सामग्री() को तोड़ने का कारण बनता है .. इसके बिना काम करता है :) –

+0

मुझे लगता है कि इसका मतलब है कि आपको अपने प्रेजेंटर – hadley

+0

yup को अपडेट करने की आवश्यकता है। update.packages ('fansr') ने किया :) –

संबंधित मुद्दे