Neste artigo, vamos explorar como automatizar a coleta de dados de CNPJ usando Python. Utilizaremos a API da ReceitaWS para obter informações detalhadas sobre cada CNPJ e armazenaremos esses dados em um arquivo CSV. Este guia é voltado para desenvolvedores que desejam automatizar a extração e armazenamento de informações de CNPJ.
Bibliotecas Utilizadas
requests: Para fazer requisições HTTP à API da ReceitaWS.
pandas: Para manipulação e formatação de dados.
time: Para controlar o intervalo entre as requisições e respeitar os limites da API.
Código Completo
Utilizando https://receitaws.com.br
import requests import pandas as pd import time def get_cnpj_data(cnpj): """ Faz uma requisição à API da ReceitaWS para obter dados do CNPJ. Args: cnpj (str): O número do CNPJ a ser consultado. Returns: dict: Dados do CNPJ em formato JSON se a requisição for bem-sucedida. None: Se a requisição falhar. """ url = f"https://receitaws.com.br/v1/cnpj/{cnpj}" response = requests.get(url) if response.status_code == 200: return response.json() else: return None def process_cnpj_data(cnpj_list): """ Processa uma lista de CNPJs, obtendo os dados de cada um e respeitando o limite de requisições da API. Args: cnpj_list (list): Lista de números de CNPJ a serem consultados. Returns: list: Lista de dados de CNPJ obtidos da API. """ data = [] for cnpj in cnpj_list: cnpj_data = get_cnpj_data(cnpj) if cnpj_data: data.append(cnpj_data) time.sleep(20) # Espera 20 segundos entre cada requisição para respeitar o limite de 3 requisições por minuto return data def format_data_for_sql(data): """ Formata os dados de CNPJ em um DataFrame do pandas, adequado para exportação. Args: data (list): Lista de dados de CNPJ obtidos da API. Returns: pandas.DataFrame: DataFrame com os dados formatados. """ df_rows = [] for item in data: row = { 'cnpj': item.get('cnpj', ''), 'nome': item.get('nome', ''), 'fantasia': item.get('fantasia', ''), 'logradouro': item.get('logradouro', ''), 'numero': item.get('numero', ''), 'complemento': item.get('complemento', ''), 'cep': item.get('cep', ''), 'bairro': item.get('bairro', ''), 'municipio': item.get('municipio', ''), 'uf': item.get('uf', ''), 'telefone': item.get('telefone', ''), 'email': item.get('email', ''), } df_rows.append(row) df = pd.DataFrame(df_rows) return df def save_to_csv(df, file_name='cnpj_data.csv'): """ Salva o DataFrame em um arquivo CSV. Args: df (pandas.DataFrame): DataFrame contendo os dados de CNPJ. file_name (str): Nome do arquivo CSV a ser salvo. """ df.to_csv(file_name, index_label='ID') if __name__ == "__main__": cnpj_list = [ '10869047000140', #CNPJ GERADO PELO 4DEVS # Adicione mais CNPJs conforme necessário ] cnpj_data = process_cnpj_data(cnpj_list) df = format_data_for_sql(cnpj_data) save_to_csv(df) Explicação do Código
Função get_cnpj_data(cnpj):
Faz uma requisição à API da ReceitaWS com o CNPJ fornecido.
Retorna os dados em formato JSON se a requisição for bem-sucedida, ou None se falhar.
Função process_cnpj_data(cnpj_list):
Itera sobre uma lista de CNPJs, chamando get_cnpj_data para cada CNPJ.
Respeita o limite de requisições da API, esperando 20 segundos entre cada requisição.
Retorna uma lista de dados de CNPJ.
Função format_data_for_sql(data):
Formata os dados de CNPJ em um DataFrame do pandas, com colunas relevantes para armazenar informações.
Prepara os dados para exportação.
Função save_to_csv(df, file_name='cnpj_data.csv'):
Salva o DataFrame em um arquivo CSV, com o nome especificado.
Bloco if name == "main"::
Define uma lista de CNPJs para processamento.
Chama as funções para processar os dados e salvar em um arquivo CSV.
Top comments (0)