Consultar endereços e CEPs brasileiros utilizando Python
Atualmente, não existe nenhuma base oficial gratuita de consulta de endereços e CEPs no Brasil. Hoje, somente o site dos Correios pode ser usado para este fim, e foi através dele que desenvolvi uma API em Python chamada consulta_correios.
Essa biblioteca é responsável por localizar o CEP através de informações dos endereços e/ou endereços pelo número do CEP, retornando o conteúdo da requisição. Para o segundo caso, já existem diversas bibliotecas e scripts, tais como ViaCep e PyCEP Correios.
Como funciona?
A API faz uma requisição POST para o site dos correios com o CEP ou endereço desejado (o CEP/endereço deve ser passado como parâmetro). Como resposta, a API recebe todo o conteúdo da página com os resultados da busca.
Nota: Para testar a busca no site dos Correios, basta entrar aqui.
Com o conteúdo retornado, utiliza-se a biblioteca Beautiful Soup para manipular o HTML da página e recuperar somente os dados relevantes. Por fim, a API trata esses campos e os retornam através de um dicionário.
Requisitos
Python 3.5+
Bibliotecas Python:
- beautifulsoup4
- requests
- unidecode
Instalação
Para instalar a versão do repositório do Python, basta utilizar o comando:
pip install Consulta-Correios
Para instalar a versão mais atual, basta utilizar o comando:
pip install -U git+git://github.com/arthurfortes/consulta_correios.git
Utilização
Para localizar o CEP pelo endereço, incluindo outros atributos (como tipo de logradouro ou bairro), basta utilizar o seguinte código:
>>> import consulta_correios
>>> address = consulta_correios.busca_cep('Av. Júlio Prestes')
>>> print(address)
{'address': 'Avenida Julio Prestes', 'neighborhood': 'Taquaral', 'city/state': 'Campinas/SP', 'zipcode': '13076-001'}
Para localizar o endereço pelo CEP, utiliza-se o mesmo código, mudando apenas o parâmetro:
>>> import consulta_correios
>>> address = consulta_correios.busca_cep('13073-003')
>>> print(address)
{'address': 'Avenida Julio Prestes', 'neighborhood': 'Taquaral', 'city/state': 'Campinas/SP', 'zipcode': '13076-001'}
Quer contribuir? Basta acessar o Github da API e seguir as instruções.
Conclusões
Neste artigo, apresentei a Consulta Correios, uma API em Python para auxiliar os desenvolvedores, de maneira prática e simples, a obter informações de endereço (logradouro, cidade, estado, CEP, etc). A biblioteca é open-source e está aberta para uso comercial e contribuições. :)