2012-11-02 15 views
6

"Kabul Ediyorum" düğmesine basılmasını gerektiren bir sayfayı https sayfasından indirmeye çalışıyorum ve daha sonra bir çerez saklıyor. Özür dilerim bu cevabın bir yerlerde belliyse ..Çerezler gerektiren bir SSL sayfasından sıkıştırılmış bir dosyayı indirmek için R nasıl kullanılır?

Web sayfasını doğrudan Chrome'da açıp "Kabul Ediyorum" u tıkladıktan sonra dosya otomatik olarak indirilmeye başlar.

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

Ben this example çoğaltmak için çalıştı, ama ben hangseng web sitesi aslında çerez/kimlik saklar sanmıyorum, bu yüzden bu örnek tüm ihtiyacım olmalıdır eğer bilmiyorum. Bunun ötesinde

, ben getURL() çağrısı cainfo = system.file ("CurlSSL", "cacert.pem", paketin = "RCurl" gibi bir sertifika şartname gerektirir düşünüyorum çünkü SSL, kimlik zorlaştırmaktadır inanıyoruz)) Bu web sitesinin oldukça zor olup olmadığını veya sadece belli bir şeyi kaçırıyorsam RCurl ile yeni başlayanlardan çok fazlaım.

Teşekkür ederiz!

+0

rhelp gelen bu url yararlı olabilir: Ben kurtardım ancak henüz gerekli değil: [(LİNK)] (http://r.789695.n4.nabble.com/How-to-set -cookies-içinde-RCurl-td4632693.html) –

cevap

12

Bu, httr ile biraz daha kolay olduğundan, çerezler ve https kusursuz bir şekilde çalışacak şekilde her şeyi ayarladığı için.

Çerezleri oluşturmanın en kolay yolu, sitenin sizin için yapmasını sağlamaktır, "Kabul ediyorum" formunun oluşturduğu bilgileri manuel olarak göndererek. Daha sonra asıl dosyayı indirmek için ikinci bir istekte bulunursunuz.

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

"ham" parametre içerik() kırmak neden olur .. onsuz çalışır :) –

+0

Bu sizin httram – hadley

+0

yup güncelleştirmek gerektiğini düşünüyorum. update.packages ('httr') yaptım :) –

İlgili konular