Recuperando cotação do dólar

Este artigo tem o objetivo de descrever uma aplicação que utiliza expressões regulares para extrair um determinado conteúdo em um site na Web. No nosso estudo de caso, vamos extrair a cotação do dólar que está no site do Banco Central.

[ Hits: 20.931 ]

Por: Javier Zambrano Ferreira em 19/05/2008


Comentário da Classe Cotacao



Comentário das variáveis:

private final String fonte: essa variável, a qual é uma constante, é responsável em armazenar a url do site do Banco Central com a cotação do dólar.

private CotacaoBean cotacao: é o objeto que representa o nosso Bean.

public Cotacao(): método construtor.

private void Extrai(String texto): método responsável em extrair da página do site o trecho do conteúdo que contém a cotação do dólar.

String data = new String(): string que terá a data da cotação postada no site.

String taxavenda = new String(): string que terá a cotação para venda do dólar.

String textocota= new String(): string com o texto da cotação.

Antes de prosseguir, vamos discutir como declarar uma expressão regular em Java. É simples demais, dentro do pacote java.util.regex.* definimos o Pattern (padrão) que deverá ser casado dentro do texto que queremos extrair a informação.

Pattern tabelacota = Pattern.compile("<table cellspacing=\"1\" summary=\"Cotação de fechamento do Dólar americano\">(.*?)</table>");

Em seguida, passamos para o Matcher. O qual é responsável em verificar no texto os trechos que se casam com o Padrão gerado.

Matcher m = tabelacota.matcher(texto);

Nesse if nós concatenamos os trechos retornados pelo Matcher.

if(m.find()) {
            //System.out.println(m.group());
            textocota = m.group();
        }

E o mesmo se repete para a data e para a taxa de venda, porém a diferença nesses métodos é que não passamos o texto toda da página para verificarmos se existe o nosso padrão e sim, apenas o trecho do texto em que os dados com a cotação está presente.

Pattern datacota = Pattern.compile("(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)");
        Matcher datam = datacota.matcher(textocota);
        
        if(datam.find()) {
            data = datam.group();
        }
        
        Pattern taxacota = Pattern.compile("(\\d),(\\d+)</td></tr>");
        Matcher taxacotam = taxacota.matcher(textocota);
        
        if(taxacotam.find()) {
            taxavenda = taxacotam.group().replaceAll("</td></tr>", "");
            taxavenda = taxavenda.replace(",", ".");
        }

Por último, no método Extrair temos:

this.cotacao.setData(data);
this.cotacao.setTaxavenda(Float.parseFloat(taxavenda));

public void getPage(): Este método é responsável em acessar a página na Web e ler o seu conteúdo para um StringBuffer.

public void ImprimeCotacaobean(): responsável em imprimir os valores setados no nosso objeto CotacaoBean cotacao.

public static void main(String[] args): método principal.

É isso pessoal, qualquer dúvida estamos aí.

Página anterior    

Páginas do artigo
   1. Introdução e definição de expressões regulares
   2. Nosso Bean
   3. Classe Cotação
   4. Comentário da Classe Cotacao
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Terasology: O Minecraft gratuito e com gráfico realista

GCJ – Conhecendo o compilador Java Livre

Introdução ao framework Mentawai

Java: Usando JInternalFrame de forma elegante

HrStatus - agilizando a virada do horário de verão

  
Comentários
[1] Comentário enviado por stremer em 20/05/2008 - 09:42h

Excelente! Muito bem explicado!

[2] Comentário enviado por raoniferreira em 20/05/2008 - 10:51h

parabens ai jzferreira!
belo artigo :P

[3] Comentário enviado por engos em 21/05/2008 - 08:47h

Muito bem detalhado, mas deveria ter dito que faria isso em Java, já na descrição.

Foi interessante o artigo, mas isso em PHP daria apenas 20% do trabalho, apesar de ser especialista em C, devo reconhecer que nesse tipo de caso a linguagem ideal é PHP.

[]s.

[4] Comentário enviado por jzferreira em 21/05/2008 - 09:41h

Caro engos,

Eu não coloquei que era em Java, pois o artigo está na seção Java - Expressões Regulares. Como é o meu primeiro artigo, fica anotado a sua sugestão de colocar em que linguagem. A respeito do PHP, eu programo também em PHP e realmente ficaria interessante, porém depende do tipo de projeto que você queira fazer. Acho que com o Java em um sistema robusto é melhor do

[5] Comentário enviado por jzferreira em 21/05/2008 - 09:41h

Caro engos,

Eu não coloquei que era em Java, pois o artigo está na seção Java - Expressões Regulares. Como é o meu primeiro artigo, fica anotado a sua sugestão de colocar em que linguagem. A respeito do PHP, eu programo também em PHP e realmente ficaria interessante, porém depende do tipo de projeto que você queira fazer. Acho que com o Java em um sistema robusto é melhor do que PHP, mas seria interessante ver essa recuperação de cotação do dólar em PHP também.

Valeu pelas dicas..

[]s

[6] Comentário enviado por jose4469 em 03/02/2014 - 22:02h

Olá, estou tendo problemas para criar o objeto Proxy para fazer a conexão.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts