rodrigosantosbr

[Py] Get CNPJ / Pessoa Jurídica data from compras.dados.gov

Jan 8th, 2019
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.72 KB | None | 0 0
  1. def getDadosPessoaJuridicaPortalCompras(cnpj):
  2.     URL='http://compras.dados.gov.br/fornecedores/doc/fornecedor_pj/{}'.format(cnpj)
  3.     try:
  4.         page = urlopen(URL)
  5.         soup = BeautifulSoup(page, "html.parser")
  6.         data1 = soup.find(class_='info-holder')
  7.         data2 = data1.find_all('p')
  8.      
  9.         """
  10.        x => <p class="outer tabela-lista-item">Id</p>
  11.        <p class="inner" style="font-family: 'Open Sans', Arial, Helvetica, sans-serif !important;margin-bottom: 0px;padding: 8px 8px;">3611</p>
  12.        """
  13.      
  14.         cnpj = ''
  15.         razao_social = ''
  16.         nome_fantasia = ''
  17.         unidade_cadastradora = ''
  18.         natureza_juridica = ''
  19.         ramo = ''
  20.         porte = ''
  21.         cnae = ''
  22.         logradouro = ''
  23.         bairro = ''
  24.         municipio = ''
  25.         cep = ''
  26.         ativo = ''
  27.      
  28.         for x in data2:
  29.             texto = x.text.strip().lower()
  30.             if texto == 'id':
  31.                 id = x.find_next_sibling().text.strip()
  32.             elif texto == 'cnpj':
  33.                 cnpj = x.find_next_sibling().text.strip()
  34.             elif texto == 'razão social':
  35.                 razao_social = x.find_next_sibling().text.strip()
  36.             elif texto == 'nome fantasia':
  37.                 nome_fantasia = x.find_next_sibling().text.strip()
  38.             elif texto == 'unidade cadastradora':
  39.                 unidade_cadastradora = x.find_next_sibling().text.strip()
  40.                 unidade_cadastradora = unidade_cadastradora.split(':')[1].strip()
  41.             elif texto == 'natureza jurídica':
  42.                 natureza_juridica = x.find_next_sibling().text.strip()
  43.                 natureza_juridica = natureza_juridica.split(':')[1].strip()
  44.             elif texto == 'ramo do negócio':
  45.                 ramo = x.find_next_sibling().text.strip()
  46.                 ramo = ramo.split(':')[1].strip()
  47.             elif texto == 'porte da empresa':
  48.                 porte = x.find_next_sibling().text.strip()
  49.                 porte = porte.split(':')[1].strip()
  50.             elif texto == 'cnae':
  51.                 cnae = x.find_next_sibling().text.strip()
  52.                 cnae = cnae.split(':')[1].strip()
  53.             elif texto == 'logradouro':
  54.                 logradouro = x.find_next_sibling().text.strip()
  55.             elif texto == 'bairro':
  56.                 bairro = x.find_next_sibling().text.strip()
  57.             elif texto == 'município':
  58.                 municipio = x.find_next_sibling().text.strip()
  59.                 municipio = municipio.split(':')[1].strip()
  60.             elif texto == 'cep':
  61.                 cep = x.find_next_sibling().text.strip()
  62.             elif texto == 'ativo':
  63.                 ativo = x.find_next_sibling().text.strip()
  64.  
  65.         data = {
  66.             "cnpj":cnpj,
  67.             "razao_social":razao_social,
  68.             "nome_fantasia":nome_fantasia,
  69.             "unidade_cadastradora":unidade_cadastradora,
  70.             "natureza_juridica":natureza_juridica,
  71.             "ramo":ramo,
  72.             "porte":porte,
  73.             "cnae":cnae,
  74.             "logradouro":logradouro,
  75.             "bairro":bairro,
  76.             "municipio":municipio,
  77.             "cep":cep,
  78.             "ativo":ativo
  79.         }
  80.         return data
  81.     except urllib.error.HTTPError:
  82.         return {}
  83.  
  84. ----------------------
  85.  
  86. # Este script extrai os dados públicos de uma pessoa jurídica contidos no cnpj.rocks
  87. # ultima atualizacao: 08/01/19 - Antonio Rodrigo dos Santos Silva
  88.  
  89. from urllib.request import Request, urlopen
  90. from bs4 import BeautifulSoup
  91. cnpj='27777761000100'
  92. URL='https://cnpj.rocks/cnpj/{}'.format(cnpj)
  93. page = urlopen(URL)
  94. soup = BeautifulSoup(page, "html.parser")
  95. data1 = soup.find(class_='dados')
  96. data2 = data1.find_all('li')
  97. #print(data2)
  98.  
  99. count = 0
  100. for x in data2:
  101.     count = count + 1
  102.     if count == 1:
  103.         cnpj = x # tag <li>CNPJ: <strong>27777761000100</strong></li>
  104.         cnpj = cnpj.strong.text.strip()
  105.     elif count == 2:
  106.         razao_social = x.strong.text.strip()
  107.     elif count == 3:
  108.         nome_fantasia = x.strong.text.strip()
  109.     elif count == 4:
  110.         data_abertura = x.strong.text.strip()
  111.     elif count == 5:
  112.         tipo = x.strong.text.strip()
  113.     elif count == 6:
  114.         situacao = x.strong.text.strip()
  115.     elif count == 7:
  116.         natureza_juridica = x.strong.text.strip()
  117.     elif count == 8:
  118.         capital_social = x.strong.text.strip()
  119.  
  120. print("cnpj = {}".format(cnpj))
  121. print("razao_social= {}".format(razao_social))
  122. print("nome_fantasia = {}".format(nome_fantasia))
  123. print("data de abertura = {}".format(data_abertura))
  124. print("tipo = {}".format(tipo))
  125. print("situacao = {}".format(situacao))
  126. print("natureza_juridica = {}".format(natureza_juridica))
  127. print("capital_social = {}".format(capital_social))
Advertisement
Add Comment
Please, Sign In to add comment