CNPJ-full icon indicating copy to clipboard operation
CNPJ-full copied to clipboard

Download dos arquivos

Open marcoeuzb opened this issue 4 years ago • 10 comments

Não seria interessante que o programa fizesse o download dos arquivos tbm?

Enfrento o problema de minha conexão ser lenta, então caso o programa fizesse o download para mim seria útil, facilitando tbm quando eu queira atualizar os dados. Assim, estou escrevendo fazendo um branch próprio com esta funcionalidade, gostaria de saber se existe interesse em adiciona-la à este master.

Nota: peço desculpas por qualquer equivoco, dado minha inexperiência sobre programação.

marcoeuzb avatar Jun 24 '20 13:06 marcoeuzb

Acho que isso já foi resolvido, amigo. Você pode usar o aria2. O Turicas, no repositório do GitHub referente a dados de empresas, fez um código simples pra esse download usando aria2:

#!/bin/bash

set -e

mkdir -p data/download data/output

if [ "$1" = "--use-mirror" ]; then
	USE_MIRROR=true
else
	USE_MIRROR=false
fi

function download_data() {
	CONNECTIONS=4
	DOWNLOAD_URL="https://receita.economia.gov.br/orientacao/tributaria/cadastros/cadastro-nacional-de-pessoas-juridicas-cnpj/dados-publicos-cnpj"
	FILE_URLS=$(wget --quiet --no-check-certificate -O - "$DOWNLOAD_URL" \
		| grep --color=no DADOS_ABERTOS_CNPJ \
		| grep --color=no ".zip" \
		| sed 's/.*"http:/http:/; s/".*//' \
		| sort)
	MIRROR_URL="https://data.brasil.io/mirror/socios-brasil"

	for url in $FILE_URLS; do
		if $USE_MIRROR; then
			url="$MIRROR_URL/$(basename $url)"
		fi
		time aria2c --auto-file-renaming=false --continue=true -s $CONNECTIONS -x $CONNECTIONS --dir=data/download "$url"
	done
}

download_data

JacksonOsvaldo avatar Jun 27 '20 02:06 JacksonOsvaldo

Realmente simples, porém o programa precisa rodar em ambiente Windows. Mesmo assim obrigado pela dica

marcoeuzb avatar Jun 28 '20 14:06 marcoeuzb

Vou testar! Obrigado pela dica.

elossio avatar Jul 18 '20 00:07 elossio

Pra compartilhar com vcs... esse script eu fiz pra baixar tudo em python... consegue baixar mais de um arquivo por vez. No ex abaixo 5.

import requests
from joblib import delayed, Parallel
from tqdm import tqdm
def download_from_url(url,chunk_size=1024):
    dst = url.split('/')[-1]
    chunk_size = int(chunk_size)
    file_size = int(requests.head(url).headers["Content-Length"])
    pbar = tqdm( total=file_size, unit='B', unit_scale=True, unit_divisor=1024, desc=url.split('/')[-1])
    req = requests.get(url, stream=True)
    with(open(dst, 'wb')) as f:
        for chunk in req.iter_content(chunk_size=chunk_size):
            if chunk:
                f.write(chunk)
                pbar.update(chunk_size)
    pbar.close()
    return file_size
base_url = 'http://200.152.38.155/CNPJ/DADOS_ABERTOS_CNPJ_{}.zip'
from joblib import parallel_backend
with parallel_backend('threading', n_jobs=5 ):
    Parallel(verbose=70)(delayed(download_from_url )(base_url.format(str(i).zfill(2))) for i in range(1,21,1))

rafarui avatar Jul 27 '20 20:07 rafarui

Legal! Obrigado!

Denis

Em 27 de jul de 2020, à(s) 22:09, Rafael Rui [email protected] escreveu:

 Pra compartilhar com vcs... esse script eu fiz pra baixar tudo em python... consegue baixar mais de um arquivo por vez. No ex abaixo 5.

import requests from joblib import delayed, Parallel from tqdm import tqdm def download_from_url(url,chunk_size=1024): dst = url.split('/')[-1] chunk_size = int(chunk_size) file_size = int(requests.head(url).headers["Content-Length"]) pbar = tqdm( total=file_size, unit='B', unit_scale=True, unit_divisor=1024, desc=url.split('/')[-1]) req = requests.get(url, stream=True) with(open(dst, 'wb')) as f: for chunk in req.iter_content(chunk_size=chunk_size): if chunk: f.write(chunk) pbar.update(chunk_size) pbar.close() return file_size base_url = 'http://200.152.38.155/CNPJ/DADOS_ABERTOS_CNPJ_{}.zip' from joblib import parallel_backend with parallel_backend('threading', n_jobs=5 ): Parallel(verbose=70)(delayed(download_from_url )(base_url.format(str(i).zfill(2))) for i in range(1,21,1)) — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

k0al4 avatar Jul 27 '20 20:07 k0al4

Realmente simples, porém o programa precisa rodar em ambiente Windows. Mesmo assim obrigado pela dica

@marcoeuzb Você pode baixar o Ubuntu no linux. Só colocar "Ubuntu" na Microsoft Store que aparece. Uma vez com ele instalado, vá para o caminho /mnt/c/ que você terá acesso aos arquivos no windows. Aí você pode ir para o diretório de interesse e executar o .sh

thiagodma avatar Aug 12 '20 11:08 thiagodma

O problema é baixar em velocidade descente.. Já tentei mandar e-mail pra eles, mas vocês obviamente, ainda não tive respostas.

marcelo-franceschini avatar Oct 29 '20 12:10 marcelo-franceschini

Serviço temporariamente indisponível. Tente novamente em alguns instantes.

https://receita.economia.gov.br/orientacao/tributaria/cadastros/cadastro-nacional-de-pessoas-juridicas-cnpj/dados-publicos-cnpj

Isso é normal??

andreafonsot avatar Jun 14 '21 01:06 andreafonsot

Esse link é o antigo, até o ano passado. Os dados mais atualizados a partir de 2021 estão em https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/consultas/dados-publicos-cnpj só que estão em outro formato, em csv.

rictom avatar Jun 14 '21 01:06 rictom

Obrigado pela informação!!

andreafonsot avatar Jun 14 '21 01:06 andreafonsot