Explorando a base de dados de CNPJ da Receita Federal

Volta e meia preciso de e-mail e telefone de 100/200 empresas. Então vou no site da Receita Federal

e procuro uma or uma.

Gostaria de automatizar isso. No blog do Curso-R

(“Explorando a base de dados de CNPJ da Receita Federal”) encontrei as explicações,

mas não obtive os resultados esperados.

O código abaixo retornou

Error: ‘~/Downloads/rfb/socio.csv.gz’ does not exist.

socio <- vroom::vroom("~/Downloads/rfb/socio.csv.gz")
#> Error: ‘~/Downloads/rfb/socio.csv.gz’ does not exist.

Usando no vroom links dos dados do Turicas no googledrive compartilhado

retornaram dataframes esquisitões.

Onde estou errando?

Haveria uma forma de só baixar as informações cadastrais

dos 100/200 CNPJ’s?

trailler <- vroom::vroom(“https://drive.google.com/file/d/1Qpm5oLnys-6jadshi45mNP1I8DDD8g4w/view?usp=sharing”)
#> New names:
#> * 1 -> 1...38
#> * 1 -> 1...39
#> * 0 -> 0...40
#> * 0 -> 0...41
#> * 0 -> 0...42
#> * …
#> Rows: 139
#> Columns: 122
#> Delimiter: “,”
#> chr [111]: <meta http-e…
#> dbl [ 11]: docs-depquafr:false,docs-elmc:false,docs-frbanmc:false,docs-rldce:false,docs-dom:…
#>
#> Use spec() to retrieve the guessed column specification
#> Pass a specification to the col_types argument to quiet this message

socio <- vroom::vroom(“https://drive.google.com/file/d/1BYKgmFxSaJgT8JprVAI1AAsH6ZJTOBFo/view?usp=sharing”)
#> New names:
#> * 1 -> 1...38
#> * 1 -> 1...39
#> * 0 -> 0...40
#> * 0 -> 0...41
#> * 0 -> 0...42
#> * …
#> Rows: 139
#> Columns: 122
#> Delimiter: “,”
#> chr [111]: <meta http-e…
#> dbl [ 11]: docs-depquafr:false,docs-elmc:false,docs-frbanmc:false,docs-rldce:false,docs-dom:…
#>
#> Use spec() to retrieve the guessed column specification
#> Pass a specification to the col_types argument to quiet this message

header <- vroom::vroom(“https://drive.google.com/file/d/1uvJddvIUpwhkuTpov23A_aALuG8Gj18z/view?usp=sharing”)
#> New names:
#> * 1 -> 1...38
#> * 1 -> 1...39
#> * 0 -> 0...40
#> * 0 -> 0...41
#> * 0 -> 0...42
#> * …
#> Rows: 139
#> Columns: 122
#> Delimiter: “,”
#> chr [111]: <meta http-e…
#> dbl [ 11]: docs-depquafr:false,docs-elmc:false,docs-frbanmc:false,docs-rldce:false,docs-dom:…
#>
#> Use spec() to retrieve the guessed column specification
#> Pass a specification to the col_types argument to quiet this message

empresa <- vroom::vroom(“https://drive.google.com/file/d/1qcyMuirmF9cUzsRwa-HfyH6TiTrAqpZz/view?usp=sharing”)
#> New names:
#> * 1 -> 1...38
#> * 1 -> 1...39
#> * 0 -> 0...40
#> * 0 -> 0...41
#> * 0 -> 0...42
#> * …
#> Rows: 139
#> Columns: 122
#> Delimiter: “,”
#> chr [111]: <meta http-e…
#> dbl [ 11]: docs-depquafr:false,docs-elmc:false,docs-frbanmc:false,docs-rldce:false,docs-dom:…
#>
#> Use spec() to retrieve the guessed column specification
#> Pass a specification to the col_types argument to quiet this message

empresa_socia <- vroom::vroom(“https://drive.google.com/file/d/1o3bS4idJch7JVCH-lz09mdGFA3XdGETy/view?usp=sharing”)
#> New names:
#> * 1 -> 1...38
#> * 1 -> 1...39
#> * 0 -> 0...40
#> * 0 -> 0...41
#> * 0 -> 0...42
#> * …
#> Rows: 139
#> Columns: 122
#> Delimiter: “,”
#> chr [111]: <meta http-e…
#> dbl [ 11]: docs-depquafr:false,docs-elmc:false,docs-frbanmc:false,docs-rldce:false,docs-dom:…
#>
#> Use spec() to retrieve the guessed column specification
#> Pass a specification to the col_types argument to quiet this message

Oi Mário!

Entendendo os erros

  1. Sobre o erro que você obteve ao executar o código do post: a mensagem de erro diz que o arquivo que você quer abrir não existe. O R está procurando um arquivo na sua pasta de downloads. Esse arquivo não está nesse caminho, portanto você não consegue abrir um arquivo que não existe :slight_smile:
  2. Sobre as tabelas que aparecem esquisitas, é porque não está abrindo o arquivo certo. Esse link encaminha para uma página em HTML do google drive, onde precisa apertar o botão para fazer o download da base. Ao tentar o código que você colocou, o que eu obtive foi a tentativa de transformar aquele HTML em um dataframe.

Resposta!

Dito isso… vamos lá na forma de resolver :blush:

A forma que eu encontrei é fazendo o download do arquivo, e abrindo, e depois sorteando as 200 linhas. Atenção que o código abaixo apresenta alguns pacotes que precisam ser instalados para que funcione, como: fs, googledrive, vroom, dplyr, e o magrittr.

# url do google drive
url <- "https://drive.google.com/file/d/1BYKgmFxSaJgT8JprVAI1AAsH6ZJTOBFo/view"

# criar a pasta onde faremos o download
fs::dir_create("data")
# nome do arquivo para fazer download
nome_arquivo <- "data/socio.csv.gz"

# fazer download do arquivo
# SERÁ NECESSÁRIO AUTENTICAR!! Atenção nessa etapa.
googledrive::drive_download(url, nome_arquivo)

# A partir daqui, tem o arquivo para seguir com o post.
socio <- vroom::vroom(nome_arquivo)
socio

# > socio <- vroom::vroom(nome_arquivo)
# Rows: 26,188,771                                    
# Columns: 10
# Delimiter: ","
# chr  [7]: cnpj, nome_socio, cnpj_cpf_do_socio, codigo_qualific...
# dbl  [2]: identificador_de_socio, percentual_capital_social
# date [1]: data_entrada_sociedade


# A função sample_n() serve para obter X linhas aleatórias.
sorteio_200_linhas <- socio %>% 
  dplyr::sample_n(200)

# # A tibble: 200 x 10
# cnpj   identificador_d… nome_socio cnpj_cpf_do_soc…
# <chr>             <dbl> <chr>      <chr>           
#   1 21557…                2 VERA LUCI… ***148546**     
#   2 17633…                2 WALTER LU… ***492438**     
#   3 02522…                2 MARIA DA … ***860348**     
#   4 15596…                2 PAULO CES… ***878689**     
#   5 21650…                2 WILMA FRA… ***077077**     
#   6 15358…                2 MARLENE N… ***735039**     
#   7 34275…                2 LETICIA V… ***118731**     
#   8 08033…                2 ANDERSON … ***048549**     
#   9 03889…                2 JORGE MAR… ***283809**     
#   10 12286…                2 RAMIRO FE… ***675951**     
#   # … with 190 more rows, and 6 more variables:
#   #   codigo_qualificacao_socio <chr>,
#   #   percentual_capital_social <dbl>,
#   #   data_entrada_sociedade <date>,
#   #   cpf_representante_legal <chr>,
#   #   nome_representante_legal <chr>,
#   #   codigo_qualificacao_representante_legal <chr>
#   > 

Dicas para fazer perguntas

Algumas dicas para as próximas vezes que for escrever perguntas:

  • Você citou um post. Seria mais fácil já deixar o link do post junto com a pergunta, assim quem responde não precisa ir pesquisar onde ele está.

  • Use as marcações em markdown para formatar o texto de uma forma que faça sentido. Você escreveu a pergunta como um texto marcado como título e aí ficou escrito de forma gigante. Não é necessário usar a marcação de título para o texto todo, use para delimitar seções.

Abraços e espero que a resposta tenha ajudado!

1 curtida

Boa tarde Beatriz. Muito obrigado pelo script, foi de grande ajuda. Já posso ir dando os primeiros passos nesta base de dados.

Tenho ainda algumas dúvidas;

  1. Onde encontro o url do google drive?
    url <- “https://drive.google.com/file/d/1BYKgmFxSaJgT8JprVAI1AAsH6ZJTOBFo/view

  2. Este url é o mesmo para os outros arquivos? trailler.csv.gz; header.csv.gz; empresa.csv.gz e empresa-socia.csv.gz.

  3. As informações que mais me interessam são o telefone e e-mail da empresa. Seria possível fazer uma raspagem direta no “http://servicos.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp” , tendo como entrada um conjunto de CNPJ´s?

Muuuiiiiiito obrigado.

P.S. - Desculpe o abuso, mas é que a resposta a uma pergunta faz surgirem outras 2 ou 3 ou mais.

Mário, vamos lá:

  1. A URL do google drive eu encontrei no texto da sua pergunta inicial.
  1. Cada arquivo .csv.gz tem um link para ser baixado. E aparentemente também estão na sua própria pergunta.

Trailler:

Header:

Empresa:

Empresa sócia:

  1. A pergunta inicial era de importação de base de dados. Já essa nova pergunta é sobre web scraping. Recomendo criar um novo tópico para perguntar essa nova pergunta! Assim fica mais organizado.

Abraços!

Boa tarde.

Refiz do jeito que me ensinou e consegui baixar e ver todos os arquivos sobre CNPJ no goggledrive do Turicas.
Vou continuar explorando e mais prá frente retomo aquela pergunta sobre webscraping.

Boa semana.
Abraços.

Que ótima notícia Mário!! :tada: :tada:
Boa semana! Abraços