2016-04-04 14 views
0

R ve web kazıma konusunda nispeten yeniyim, bu yüzden doğada açıkça görülen hatalar için özür dilerim.R: Kazıma Sitesi, URL'ye Tarihe Göre Döngü Artırma, CSV'ye Kaydetme

URL 1'e bir CSV dosyasını kazıp çıkarmak, URL 2'ye göre art arda sıralamak ve her CSV dosyasını kaydetmek istiyorum.

startdate <- as.Date("2007-07-01") 
enddate <- as.Date(Sys.Date()) 

for(startdate in enddate){ // Loop through dates on each URL 
    read.csv(url("http://api.foo.com/charts/data?output=csv&data=close&startdate=",startdate,"&enddate=",startdate,"&exchanges=bpi&dev=1")) 
    startdate = startdate + 1 
    startdate <- startdate[-c(1441,1442),] // Irrelevant to question at hand. Removes unwanted information auto-inserted into CSV. 
    write.csv(startdate[-c(1441,1442),], startdate, 'csv', row.names = FALSE) 
} 

şu hatalar outputted ediliyor:

read.csv(url("http://api.foo.com/charts/data?output=csv&data=close&startdate=",startdate,"&enddate=",startdate,"&exchanges=bpi&dev=1")) 
// Error in match.arg(method, c("default", "internal", "libcurl", "wininet")) :'arg' should be one of “default”, “internal”, “libcurl”, “wininet” 

ve:

write.csv(startdate[c(1441,1442),], startdate, 'csv', row.names = FALSE) 
//Error in charToDate(x) : character string is not in a standard unambiguous format 

bu hataları düzeltmek konusunda herhangi bir öneriniz var mı?

+0

'için (başlangıçta başlangıç ​​tarihi)' bu ne yapmaya çalışıyor? – MichaelChirico

+0

'başlangıç ​​tarihi <- başlangıç ​​tarihi [-c (1441,1442)] Bu ne yapmaya çalışıyor? – MichaelChirico

cevap

1

Hedefinize bağlı olarak, "URL 1'den bir CSV dosyasını kazımaya arıyorum, URL'yi 2'ye kadar artırın, ardından her CSV dosyasını kaydedin." Burada bir kod örneği:

startdate <- as.Date("2016-01-01") 
enddate <- as.Date(Sys.Date()) 

geturl <- function(sdt, edt) { 
    paste0("http://api.foo.com/charts/data?output=csv&data=close", 
     "&startdate=",sdt,"&enddate=",edt,"&exchanges=bpi&dev=1") 
} #geturl 

dir.create("data") 
garbage <- lapply(seq.Date(startdate, enddate, by="1 day"), function(dt) { 
    dt <- as.Date(dt) 
    dat <- read.csv(url(geturl(dt, dt))) 
    write.csv(dat, paste0("data/dat-",format(dt, "%Y%m%d"),".csv"), row.names=FALSE) 
}) 

Bu ürün nedir? Örnek bir bağlantı sağlayabilir misiniz? ve bazı örnek tarihler?

+0

Mükemmel çalışıyor, teşekkürler! – rsylatian