Consulta CNPJ online
Publicado por Fernando (última atualização em 27/09/2016)
[ Hits: 16.592 ]
Homepage: https://github.com/phoemur/
Download importaCNPJ2.py (versão 2)
Este pequeno script em Python 3 faz a consulta de dados de CNPJ através do site: http://receitaws.com.br/
Demora um pouco pra pegar os dados mas funciona perfeitamente.
Modo de uso:
$ ./cnpj.py "CNPJ[1]" "CNPJ[2]" ... "CNPJ[N]"
Versão 2 - Enviado por Jean em 20/08/2016
Changelog: Realizei a seguinte modificação no scrypt do amigo.
Ao invés de listar na tela as infomações dos CNPJ pesquisados, as informações são gravadas em arquivos de textos, separados dentro do diretório /CNPJ.
#!/usr/bin/env python3 import json import sys import urllib.request def usage(): print('Este script busca informações online sobre números de CNPJ') print('Modo de uso: {0} "CNPJ[1]" "CNPJ[2]" ... "CNPJ[N]"'.format(sys.argv[0])) sys.exit(1) def valida_cnpj(cnpj): 'Recebe um CNPJ e retorna True se formato válido ou False se inválido' cnpj = parse_input(cnpj) if len(cnpj) != 14 or not cnpj.isnumeric(): return False verificadores = cnpj[-2:] lista_validacao_um = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] lista_validacao_dois = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] 'Calcular o primeiro digito verificador' soma = 0 for numero, ind in zip(cnpj[:-1], range(len(cnpj[:-2]))): soma += int(numero) * int(lista_validacao_um[ind]) soma = soma % 11 digito_um = 0 if soma < 2 else 11 - soma 'Calcular o segundo digito verificador' soma = 0 for numero, ind in zip(cnpj[:-1], range(len(cnpj[:-1]))): soma += int(numero) * int(lista_validacao_dois[ind]) soma = soma % 11 digito_dois = 0 if soma < 2 else 11 - soma return verificadores == str(digito_um) + str(digito_dois) def parse_input(i): 'Retira caracteres de separação do CNPJ' i = str(i) i = i.replace('.', '') i = i.replace(',', '') i = i.replace('/', '') i = i.replace('-', '') i = i.replace('\\', '') return i def busca_cnpj(cnpj): url = 'http://receitaws.com.br/v1/cnpj/{0}'.format(cnpj) opener = urllib.request.build_opener() opener.addheaders = [ ('User-agent', " Mozilla/5.0 (Windows NT 6.2; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0")] with opener.open(url) as fd: content = fd.read().decode() dic = json.loads(content) if dic['status'] == "ERROR": print('CNPJ {0} rejeitado pela receita federal\n\n'.format(cnpj)) else: try: print('Nome: {0}'.format(dic['nome'])) print('Nome fantasia: {0}'.format(dic['fantasia'])) print('CNPJ: {0} Data de abertura: {1}'.format(dic['cnpj'], dic['abertura'])) print('Natureza: {0}'.format(dic['natureza_juridica'])) print('Situação: {0} Situação especial: {1} Tipo: {2}'.format(dic['situacao'], dic['situacao_especial'], dic['tipo'])) print('Motivo Situação especial: {0}'.format(dic['motivo_situacao'])) print('Data da situação: {0}'.format(dic['data_situacao'])) print('Atividade principal:') print(' '*10 + '{0} - {1}'.format(dic['atividade_principal'][0]['code'], dic['atividade_principal'][0]['text'])) print('Atividades secundárias:') for elem in dic['atividades_secundarias']: print(' '*10 + '{0} - {1}'.format(elem['code'], elem['text'])) print('Endereço:') print(' '*10 + '{0}, {1}'.format(dic['logradouro'], dic['numero'])) print(' '*10 + '{0}'.format(dic['complemento'])) print(' '*10 + '{0}, {1}'.format(dic['municipio'], dic['uf'])) print('Telefone: {0}'.format(dic['telefone'])) print('Email: {0}\n\n'.format(dic['email'])) except KeyError: pass if __name__ == '__main__': if len(sys.argv) == 1 or sys.argv[1] in {'-h', '--help'}: usage() for arg in sys.argv[1:]: if not valida_cnpj(arg): print('CNPJ "{0}" tem formato inválido'.format(arg)) else: busca_cnpj(parse_input(arg))
Cliente/Servidor Usando Python
Cotação atual do dólar - versão Python
Mais um script pra autenticar no veloxzone
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (1)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta