2017-02-07 6 views
0

Ich versuche, Web-Daten mit einer Schleife zu kratzen und jede Instanz in ein anderes Blatt in derselben Excel-Datei zu schreiben. Ich habe das folgende Skript eingefügt. Die Blattnamen werden korrekt erstellt, aber derselbe Datenrahmen wird in beide Blätter geschrieben. Ich schätze jede Hilfe. Vielen Dank!Geschriebenes Web-Scrape zu Excel-Blättern schreiben

library(httr) 
library(jsonlite) 
library(tidyverse) 
options(width=120) 
xyz=c('"strStartDate": "2016-9-25", "strEndDate": "2016-11-1"','"strStartDate": "2016-8-25", "strEndDate": "2016-9-1"') 
    abc=c("2016-9-25","2016-8-25") 
    for (i in xyz){ 
    for(j in abc){ 
    ret <- fromJSON(content(POST("http://www.fangraphs.com/splitstool.aspx/getsplitleaders", 
       content_type_json(), 
       body = paste0('{"strPlayerId": "all", "strSplitArr": "[]", "strGroup": "season", "strPosition": "B", "strType": "1",',i,',"strSplitTeams": "false", "dctFilters": [], "strStatType": "player", "strAutoPt": "true"}')), as="text")) 

    df <- setNames(as_data_frame(ret$d$v), ret$d$k) 
    write.xlsx(df,"Slas.xlsx",append=TRUE,sheetName=j)}} 
+0

' "strType": "1", 'i'', ich denke du meinst ' "strType": "1", 'j''? Für jedes j-Blatt senden Sie die gleiche Anfrage mit dem i-Parameter – Jean

+0

@waterling Ich könnte Missverständnis sein - aber mit dem i-Parameter, ich versuche, zwei separate Anfragen zu senden- "" strStartDate ": 2016-9-25 "," strEndDate ":" 2016-11-1 "und" strStartDate ":" 2016-8-25 "," strEndDate ":" 2016-9-1 ". Ich weiß, es ist sehr schlampig. –

+0

Im Moment sehe ich, dass Sie 'j' nur für den Blattnamen verwenden. Es wird nicht beim Buchen der Anfrage verwendet. Da Sie die Anfrage UND schreiben auf das Blatt innerhalb der j-Schleife machen, hat sich die Anforderung nicht jedes Mal geändert (und somit hat sich auch die Antwort vom Server nicht geändert), wenn Sie in das Blatt geschrieben haben. – Jean

Antwort

0
req.df<-data.frame(strStartDate = c("2016-9-25", "2016-8-25"), 
        strEndDate = c("2016-11-1", "2016-9-1"), stringsAsFactors = FALSE) 

for(i in 1:nrow(req.df)){ 
    ret<- fromJSON(content(POST("http://www.fangraphs.com/splitstool.aspx/getsplitleaders", 
           content_type_json(), 
           body = paste0('{"strPlayerId": "all", "strSplitArr": "[]", "strGroup": "season", "strPosition": "B", "strType": "1",', 
              '"strStartDate": "', req.df[i,"strStartDate"] ,'", "strEndDate":"', req.df[i,"strEndDate"],'"', 
              ',"strSplitTeams": "false", "dctFilters": [], "strStatType": "player", "strAutoPt": "true"}')), as="text")) 

    df <- setNames(as_data_frame(ret$d$v), ret$d$k) 
    write.xlsx(df,"Slas.xlsx",append=TRUE,sheetName=req.df[i,"strStartDate"]) 
} 
+0

Danke. (Ich kann nicht stimmen, aber ich weiß es zu schätzen!) –

Verwandte Themen