Web Scraping - Acessando uma Planilha CSV

Julio, olá! estou tentando fazer a raspagem dos dados do endereço:

https://www3.bcb.gov.br/ifdata/index.html#

para 2000/03, Conglomerados e RESUMO, por exemplo. O problema é que o resultado que me interessa, aparece em formato CSV que precisa ser clicado quando a pesquisa é montada, pior, preciso ir salvando esses arquivos CSV. Tentei raspar diretamente do que aparece na pesquisa, contudo o resultado monta errado o resultado no R. Agradeço a ajuda! Grande abraço!

André, me parece que você encontrou um feliz caso de API escondida por trás do site \o/

Veja o print screen:

Os três arquivos JSON que ele busca são justamente os dados que alimentam o a tabela que você quer acessar. Por exemplo, para acessar o primeiro, eu faria

library(magrittr)

u <- "https://www3.bcb.gov.br/ifdata/rest/arquivos?nomeArquivo=200003/filtro200003.json&{}"
r <- httr::GET(u)
da <- httr::content(r, simplifyDataFrame = TRUE) %>% 
  tibble::tibble()

da
#> # A tibble: 5 x 6
#>      id n                      ni                           fi    ii d          
#>   <int> <chr>                  <chr>                     <int> <int> <list>     
#> 1     1 TCB - Tipo de Consoli… TCB - Business Model Cat…     1 79671 <df[,4] [7…
#> 2     2 TC - Tipo de Controle  TC - Control                  1 79676 <df[,4] [3…
#> 3     3 TD - Tipo de Consolid… TD - Aggregation type         1 79675 <df[,4] [2…
#> 4     4 TI - Tipo de Institui… TI - Types                    1 79680 <df[,4] [2…
#> 5     5 SR - Segmento Resoluç… SR - Resolution nº 4.553…     1 79679 <df[,4] [5…

# para "explodir" os conteúdos da coluna "d"
da %>% 
  tidyr::unnest(d, names_sep = "_")
#> # A tibble: 39 x 9
#>       id n         ni          fi    ii  d_id d_v   d_n            d_ni         
#>    <int> <chr>     <chr>    <int> <int> <int> <chr> <chr>          <chr>        
#>  1     1 TCB - Ti… TCB - B…     1 79671     1 b1    b1 - Banco Co… b1 - Commerc…
#>  2     1 TCB - Ti… TCB - B…     1 79671     2 b2    b2 - Banco Mú… b2 - Univers…
#>  3     1 TCB - Ti… TCB - B…     1 79671     3 b3S   b3S - Coopera… b3S - Credit…
#>  4     1 TCB - Ti… TCB - B…     1 79671     4 b3C   b3C - Central… b3C - Centra…
#>  5     1 TCB - Ti… TCB - B…     1 79671     5 b4    b4 - Banco de… b4 - Develop…
#>  6     1 TCB - Ti… TCB - B…     1 79671     6 n1    n1 - Não Banc… n1 - Non Ban…
#>  7     1 TCB - Ti… TCB - B…     1 79671     7 n2    n2 - Não Banc… n2 - Non Ban…
#>  8     2 TC - Tip… TC - Co…     1 79676     1 1     1 - Público    1 - Governme…
#>  9     2 TC - Tip… TC - Co…     1 79676     2 2     2 - Privado N… 2 - Domestic…
#> 10     2 TC - Tip… TC - Co…     1 79676     3 3     3 - Privado c… 3 - Foreign …
#> # … with 29 more rows

Created on 2020-04-30 by the reprex package (v0.3.0)

Para pegar todos os dados, basta substituir os endpoints (parece que são “filtro”, “info” e “cadastro”), bem como as datas correspondentes.

Boa sorte :slight_smile:

4 curtidas