首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rselenium刮削

Rselenium刮削
EN

Stack Overflow用户
提问于 2017-06-08 22:49:15
回答 1查看 287关注 0票数 0

我是刚开始刮擦的。我正在尝试,即出现在站点中的,并将其转换为dataframe,但我似乎必须执行一个脚本。我正在使用Rselenium方法。也许Jsonlite更好,但我不知道怎么做。

代码语言:javascript
复制
# 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]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-13 03:17:01

这个页面有三件棘手的事情: 1)它是一个iFrame,2)访问“未框”页面需要cookie,3)它是用javascript编写的,我发现它更难抓取。

如果您不介意的话,我已经使用了CVM的页面而不是BM&FBovespa,并以BRF为例。要查找损益表,请转到CVM页面 > " Companhias“(左侧)>单击"Consulta de Documentos de Companhias Abertas”>选择公司>单击DFP >,最后,在所需文档的上方选择"Consulta“。

u1是由上述路径生成的url。使用Chrome的SelectorGadget或查看浏览器的开发工具,您将找到u2。就我个人而言,我发现SelectorGadget更容易使用。启动它时,它将给您一个url,允许您在iFrame中进行选择。

代码语言:javascript
复制
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,该网站将返回一条错误消息:“对象引用未设置为对象的实例”。要摆脱这种情况,您需要将cookie从u1传递给u2

代码语言:javascript
复制
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编写的,则可以使用#clt00_cphPopUp_tbDados选择器。我在javascript上找到了一个奇怪的解决方法。

代码语言: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

本httr教程帮助我编写了这段代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44446738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档