2016-12-28 1 views
0

J'essaye de télécharger un pdf du centre national d'information par RCurl mais j'ai eu quelques problèmes. Pour cet exemple URL, je veux le pdf correspondant aux paramètres par défaut, sauf pour "Format de rapport" qui devrait être "PDF". Lorsque j'exécute le script suivant, il enregistre le fichier associé à la sélection des autres boutons ("Parent (s) de ..."/HMDA - pas la valeur par défaut). J'ai essayé d'ajouter ces éléments d'entrée à params, mais cela n'a rien changé. Quelqu'un pourrait-il m'aider à identifier le problème? Merci.Passer les paramètres corrects à RCurl/postForm

library(RCurl) 
curl = getCurlHandle() 
curlSetOpt(cookiejar = 'cookies.txt', curl = curl) 
params = list(rbRptFormatPDF = 'rbRptFormatPDF') 

url = 'https://www.ffiec.gov/nicpubweb/nicweb/OrgHierarchySearchForm.aspx?parID_RSSD=2162966&parDT_END=99991231' 
html = getURL(url, curl = curl) 
viewstate = sub('.*id="__VIEWSTATE" value="([0-9a-zA-Z+/=]*).*', '\\1', html) 
event = sub('.*id="__EVENTVALIDATION" value="([0-9a-zA-Z+/=]*).*', '\\1', html) 
params[['__VIEWSTATE']] = viewstate 
params[['__EVENTVALIDATION']] = event 
params[['btnSubmit']] = 'Submit' 
result = postForm(url, .params=params, curl=curl, style='POST') 

writeBin(as.vector(result), 'test.pdf') 

Répondre

1

Est-ce que ceci fournit le bon PDF?

library(httr) 
library(rvest) 
library(purrr) 

# setup inane sharepoint viewstate parameters 
res <- GET(url = "https://www.ffiec.gov/nicpubweb/nicweb/OrgHierarchySearchForm.aspx", 
      query=list(parID_RSSD=2162966, parDT_END=99991231)) 

# extract them 
pg <- content(res, as="parsed") 
hidden <- html_nodes(pg, xpath=".//form/input[@type='hidden']") 
params <- setNames(as.list(xml_attr(hidden, "value")), xml_attr(hidden, "name")) 

# pile on more params 
params <- c(
    params, 
    grpInstitution = "rbCurInst", 
    lbTopHolders = "2961897", 
    grpHMDA = "rbNonHMDA", 
    lbTypeOfInstitution = "-99", 
    txtAsOfDate = "12/28/2016", 
    txtAsOfDateErrMsg = "", 
    lbHMDAYear = "2015", 
    grpRptFormat = "rbRptFormatPDF", 
    btnSubmit = "Submit" 
) 

# submit the req and save to disk 
POST(url = "https://www.ffiec.gov/nicpubweb/nicweb/OrgHierarchySearchForm.aspx", 
    query=list(parID_RSSD=2162966, parDT_END=99991231), 
    add_headers(Origin = "https://www.ffiec.gov"), 
    body = params, 
    encode = "form", 
    write_disk("/tmp/output.pdf")) -> res2 
+0

Oui, cela fonctionne - merci! Je suppose que vous avez vraiment besoin de spécifier explicitement tous les paramètres, même s'ils apparaissent par défaut – sirallen

+0

Il semble que 'lbTopHolders' et' lbHMDAyear' ne sont pas nécessaires – sirallen

+0

"APIs" cachées sont vraiment horribad ;-) – hrbrmstr