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.843 ]

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

Montando um ambiente JAVA básico (Eclipse traduzido + JDK 1.5)

Transforme seu celular em terminal sem fio SSH/Telnet

Streams, lendo do teclado e escrevendo em arquivos com Java

Jubler - Editor de legendas de filmes para Linux

Configurando e-Gen + Tomcat + JSDK

  
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