このページは約3トリッキーなものがあります:1)それはiFrameのだ、2)クッキーは、「フレームなし」のページにアクセスするために必要であり、3)これはJavaScriptで書かれて、魔女は、私はより難しいです擦り傷。
気にしない場合は、BM & FBovespaの代わりにCVMのページを使用し、例としてBRFを使用しました。 損益計算書を見つけるには、CVM's page> "Companhias"(左側)> [Consulta de Documentos de Companhias Abertas]をクリックし、会社を選択して[DFP]をクリックし、最後に[目的の文書。
u1
は、上記のパスで生成されたURLです。 ChromeのSelectorGadgetを使用するか、ブラウザの開発ツールを調べると、u2
が見つかります。個人的には、SelectorGadgetを使いやすくしています。起動すると、iFrameで選択できるURLが表示されます。
u1 <- "https://www.rad.cvm.gov.br/enetconsulta/frmGerenciaPaginaFRE.aspx?CodigoTipoInstituicao=1&NumeroSequencialDocumento=62776"
u2 <- "https://www.rad.cvm.gov.br/enetconsulta/frmDemonstracaoFinanceiraITR.aspx?Informacao=2&Demonstracao=4&Periodo=0&Grupo=DFs+Consolidadas&Quadro=Demonstra%C3%A7%C3%A3o+do+Resultado&NomeTipoDocumento=DFP&Titulo=Demonstra%C3%A7%C3%A3o%20do%20Resultado&Empresa=BRF%20SA&DataReferencia=31/12/2016&Versao=1&CodTipoDocumento=4&NumeroSequencialDocumento=62776&NumeroSequencialRegistroCvm=1413&CodigoTipoInstituicao=1"
近いお使いのブラウザとu2
に直行した場合、ウェブサイトは、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーメッセージが返されます。これを解消するには、u1
からu2
にクッキーを渡したいとします。
r <- GET(u1)
biscoitos <- cookies(r) #cookies de acesso para u2
page <- GET(u2, encoding = "utf-8",
set_cookies("ASP.NET_SessionId" = biscoitos$value[1] ,
"BIGipServerpool_www.rad.cvm.gov.br_443" = biscoitos$value[2],
"TS01871345" = biscoitos$value[3]))
pg_content <- content(page, "raw")
このページはHTMLで書かれていた場合、1は#clt00_cphPopUp_tbDados
セレクタを使用することができます。私はこの変わった回避策をjavascriptで見つけました。
writeBin(pg_content, "temp.txt")
html_page <- read_html("temp.txt", encoding = "utf-8")
write_html(html_page, "temp.html", encoding = "utf-8")
df <- readHTMLTable("temp.html", encoding = "utf-8")
df <- df$ctl00_cphPopUp_tbDados
This httr tutorial私はこのコードを書くのに役立ちました。
ログインせずにテーブルに確定的にアクセスする方法はないようです(私たちの大部分はできません)。それはひどいSharePointサイトであり、状態を維持するためにかなり重い "View State"トラッカーを使用しているため、最初のページから開始し、ログインを調整し、ボタンのクリックを調整する可能性があります。最後に、最後のページは実際には 'iframe'のあるページなので、ページソースを取得しているときに' iframe'を書き留める必要があります。もう少し余裕のある人が代表的なコードサンプルを提供してくれることを願っています。 – hrbrmstr