2016-12-28 3 views
0

私は国情報センターからRCurl経由でpdfをダウンロードしようとしていますが、何か問題がありました。この例では、URLの場合、「PDF」でなければならない「Report Format」を除き、デフォルト設定に対応するpdfが必要です。次のスクリプトを実行すると、他のボタン( "Parent of s ..."/HMDA - デフォルトではありません)の選択に関連するファイルが保存されます。これらの入力要素をparamsに追加しようとしましたが、何も変更されませんでした。誰かが問題を特定するのを手伝ってもらえますか?ありがとう。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') 

答えて

1

これは正しい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

はい、これは動作します - ありがとうございます!私は実際には、すべてのパラメータを明示的に指定する必要があると思います。たとえデフォルトとして表示されていても、 – sirallen

+0

です。lbTopHoldersとlbHMDAyearは不要です。 – sirallen

+0

隠されたAPIは本当に恐ろしいです;-) – hrbrmstr

関連する問題