JAVA- HTML parser

5 respostas
T

Bom dia Galera.

Estou precisando de uma ajuda, Estou com um problema eu precisa pegar dados dentro de um codigo HTML. Não sei como "andar" Dentro do codigo, Fiz esse CODIGO para pegar o HTML.

package metodos;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import negocio.Conta;

public class CarregarPagina {

    public void getPage(URL url, File file) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        BufferedWriter out = new BufferedWriter(new FileWriter(file));

        String inputLine;

        while ((inputLine = in.readLine()) != null) {
            // Imprime página no console
            System.out.println(inputLine);
            // Grava pagina no arquivo
            out.write(inputLine);
            out.newLine();
        }

        in.close();
        out.flush();
        out.close();
    }

    public static void setPage() {
        Conta c = new Conta();
        URL url = null;
        File file = new File("c:\\page.html");
        try {
            url = new URL("http://levelupgames.uol.com.br/combat-arms/comunidade/ranking/player-profile/"+c.getNick());
            new CarregarPagina().getPage(url, file);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ele pega o codigo da pagina, retorna uma impresão na tela, e gera um arquivo .HTML.

Ate ai foi facil, Mais agora preciso pegar alguns dados desse codigo,
Isso que eu gostaria da saber qual a melhor maneira de fazer ?

Existe alguma maneira de manipular ese codigo, Ou faço um String com esse codigo, e tento procurar o que preciso dentro dele.

Se alguem tiver uma ideia melhor, ou sugestão ja ajuda.

5 Respostas

matheuslmota

Veja a classe Pattern. Ela tem tudo que você precisa para manipular Expressões Regulares. Não sei que tipo e informações você precisa capturar, então fica difícil sugerir algum código.

T

Seria o resultado de algumas tags, Como não tenho acesso ao Banco, Estou pegando Pelo HTML o que preciso, So que estou com dificuldade de apontar essa tags.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<body>
<div class="centralizador">
<div class="topo">
<form id="ctl0_ctl0_ctl1" action="/combat-arms/comunidade/ranking/player-profile/oxy_666" method="post">
<div style="visibility:hidden;">
<script src="/combat-arms/assets/e2195368/clientscripts.php?js=prado" type="text/javascript">
<div class="colunaEsqInterna">
<div class="colunaMeioInternaRanking">
<!--coloque aqui o seu html'-->
<div class="stripe colunaMeioInterna_Topic">
<div class="colunaMeioInterna_Conteudo">
<div id="ranking_totem_horizontal" class="stripe_ranking">
<div id="ranking_top_search" class="stripe_ranking">
<label for="">
<img src="/combat-arms/imagens/ranking/a-nome-do-jogador.png">
</label>
<input id="ctl0_ctl0_MainBody_Body_ProfileSearch" type="text" name="ctl0$ctl0$MainBody$Body$ProfileSearch">
<input class="stripe_ranking bt_search_ranking" type="image" alt="" src="/combat-arms/img/blank.gif" name="ctl0$ctl0$MainBody$Body$ctl0">
</div>
<div id="ctl0_ctl0_MainBody_Body_PlayerInfo">
<div id="ranking_player_info" class="stripe_ranking">
<!-- <table id="player_info_table"> <tr> <td class="ranking_player_info_esq stripe_ranking" valign="top"> <img src="/combat-arms/imagens/ranking/nome-do-jogador.png" /> </td> <td class="ranking_player_info_dir stripe_ranking" valign="middle"> </td> </tr> </table> -->
<img id="img_player_info" src="/combat-arms/img/blank.gif">
<dl>
<dt class="stripe_ranking">
<dd class="stripe_ranking">
<dt class="stripe_ranking">
<dd class="stripe_ranking">8/30/2010 11:49:20 PM</dd>
<dt class="stripe_ranking">
<dd class="stripe_ranking">1</dd>
<dt class="stripe_ranking">
<dd class="stripe_ranking">2.81</dd>
<dt class="stripe_ranking">
<dd class="stripe_ranking">7575894</dd>
<dt class="stripe_ranking">
<dd class="stripe_ranking">5822662</dd>
</dl>
<div id="ranking_player_clan_box">
<div style="clear:both;"></div>
</div>
<div id="ranking_player_tab1" style="">
<div id="ranking_player_tab2" style="display:none;">
<div id="ranking_player_tab3" style="display:none;">
<div id="ranking_player_tab4" style="display:none">
</div>
</div>
</div>
<script type="text/javascript">
</form>
<div class="clearboth"></div>
<div class="footer">
</div>
<div id="barraUOL">
<div id="barraLUG">
</body>
</html>

Preciso por exemplo pegar o dado da linha 33. Como fasso isso?

xandevieira

Tem uma api q me parece ser muito boa, usei para uma coisa bem simples, não me aprofundei muito nela

T

Vlw cara vo da um molhada!

T

Alguem poderia me dar um exemplo com Jsoup?

Criado 14 de julho de 2011
Ultima resposta 14 de jul. de 2011
Respostas 5
Participantes 3