2017-06-08 13 views
0

私はスクレイピング時に新しいです。私はscrapeテーブルのサイトに表示され、データフレームに変換しようとしていますが、私はスクリプトを実行する必要があるようです。私はRseleniumアプローチを使用しています。おそらくJsonliteがうまく動作しますが、どうしたらいいか分かりません。Rselenium Jsonlite掻き取り

# Running without problem 
require(RSelenium) 
rD <- rsDriver() 
remDr <- rD[["client"]] 
url <- "https://www.rad.cvm.gov.br/ENETCONSULTA/frmGerenciaPaginaFRE.aspx?NumeroSequencialDocumento=62839&CodigoTipoInstituicao=2" 
remDr$navigate(url) 

# Here is my problem 
remDr$findElement('id', 'ctl00_cphPopUp_tbDados')$getElementText()[[1]] 
+0

ログインせずにテーブルに確定的にアクセスする方法はないようです(私たちの大部分はできません)。それはひどいSharePointサイトであり、状態を維持するためにかなり重い "View State"トラッカーを使用しているため、最初のページから開始し、ログインを調整し、ボタンのクリックを調整する可能性があります。最後に、最後のページは実際には 'iframe'のあるページなので、ページソースを取得しているときに' iframe'を書き留める必要があります。もう少し余裕のある人が代表的なコードサンプルを提供してくれることを願っています。 – hrbrmstr

答えて

0

このページは約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私はこのコードを書くのに役立ちました。

関連する問題