Consulta CNPJ online
Publicado por Fernando (última atualização em 27/09/2016)
[ Hits: 17.195 ]
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))
Cotação do Dólar e Euro e conversão para Real
Descubra seu IP através do MeuIP
Enviando emails com autenticação smtp python cgi
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Quando vocês pararam de testar distros? (12)
Problema com som no laptop (5)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









