Automatizando consultas de CEP com Html Agility Pack

3 minutos para ler

Fala, galera! Beleza?

Nesse artigo vou lhes mostrar como automatizar consultas de CEPs no site dos Correios através da biblioteca HtmlAgilityPack para .NET Core.

Vamos lá!

Obs: para não deixar o artigo muito extenso, não vou explicar o passo a passo para se criar uma aplicação console no .NET Core.

Após a criação da aplicação console, instale a biblioteca do HtmlAgilityPack através do NuGet .

Você pode instalar usando o NuGet dentro do Visual Studio:

NuGet dentro do Visual Studio com HtmlAgilityPack selecionado
Pacote instalado

Agora que já temos nosso pacote instalado, vamos adicionar o seguinte trecho de código:

Classe Program.cs com o início do código

Uma breve explicação do trecho acima:

Primeiro, pedimos para que o usuário insira o CEP para que a nossa aplicação busque o endereço correspondente. Após isso, passamos o CEP digitado para o nosso método chamado “BuscaEnderecoPeloCEP(cep)”.

Método BuscaEnderecoPeloCEP

Nessa primeira parte do nosso método, criamos três variáveis do tipo “string”: “httpResponse, html e UrlCorreio”.

Observação: A variável “httpResponse” será responsável por armazenar o html que é retornado após enviarmos uma requisição do tipo POST para o endereço dos Correios (armazenado na variável “UrlCorreio”).

Após isso, iniciamos o nosso bloco “Try-catch”. Dentro dele, criamos uma variável do tipo “Dictionary<string, string>” (Aqui, pode-se usar qualquer coleção que seja do tipo Chave-Valor).

Iremos enviar essa coleção como um “FormUrlEncodedContent” dentro do nosso “HttpRequestMessage”. Para fazer a requisição para a url dos correios, criamos um bloco “using” instanciando um objeto do tipo “HttpClient”. Esse objeto será responsável por fazer a requisição HTTP.

Final do método BuscaEndereco

Aqui, instanciamos um objeto do tipo “HtmlDocument” (classe do HtmlAgilityPack). Para podermos extrair todas as informações contidas dentro html retornado, passamos o html para o método “LoadHtml()”.

A váriavel “name” é do tipo “HtmlNodeCollection” e receberá todas as informações contidas na tag html “td”.

As variáveis “bairro, cidade e rua”, receberão as informações contidas nas posições dessa coleção (“name[1], name[2], name[0]”, respectivamente).

Por fim, a variável “endereco” receberá a concatenação das informações contidas em “bairro, cidade e rua” e então retornaremos essa informação.

Caso ocorra alguma exception, retornaremos a mensagem do erro. (é possível melhorar, e muito, esse tipo de tratamento. Porém, não é o assunto principal aqui).

Como forma de estudo e afim de abstrair essas funcionalidades, em março de 2020, criei uma biblioteca em .NET Standard 2.0 para realizar essas consultas. Inclusive, é possível buscar os CEPs a partir de um endereço. Caso queira conferir, vou deixar os links aqui:

Escrito por: João Paulo

Para Medium: https://medium.com/@j_paulo_15/automatizando-consultas-de-cep-com-htmlagilitypack-565f6fba2ac

Você também pode gostar

Deixe um comentário