Ir para o conteúdo
sent

Parsing Pagina Web

Mensagens Recomendadas

sent

Boa noite,

Estou com um problema entre mãos, que é o seguinte: preciso de ir buscar informação a um determinado site; ou seja terei que ir dividindo o site, o problema é que não sei como -.-

já estive a pesquisar na net e encontrei este exemplo:

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Enumeration;

import javax.swing.text.AttributeSet;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;

public class MainClass {
  public static void main(String[] args) {
    ParserGetter kit = new ParserGetter();
    HTMLEditorKit.Parser parser = kit.getParser();
    HTMLEditorKit.ParserCallback callback = new ReportAttributes();

    try {
      URL u = new URL("http://www.java2s.com");
      InputStream in = u.openStream();
      InputStreamReader r = new InputStreamReader(in);
      parser.parse(r, callback, false);
    } catch (IOException e) {
      System.err.println(e);
    }
  }
}

class ReportAttributes extends HTMLEditorKit.ParserCallback {

  public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes, int position) {
    this.listAttributes(attributes);
  }

  private void listAttributes(AttributeSet attributes) {
    Enumeration e = attributes.getAttributeNames();
    while (e.hasMoreElements()) {
      Object name = e.nextElement();
      Object value = attributes.getAttribute(name);
      if (!attributes.containsAttribute(name.toString(), value)) {
        System.out.println("containsAttribute() fails");
      }
      if (!attributes.isDefined(name.toString())) {
        System.out.println("isDefined() fails");
      }
      System.out.println(name + "=" + value);
    }
  }

  public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes, int position) {
    this.listAttributes(attributes);
  }
}

class ParserGetter extends HTMLEditorKit {
  public HTMLEditorKit.Parser getParser() {
    return super.getParser();
  }
}

problema é que isto não funciona, dá um erro.

Alguém me pode dar umas orientações, por favor...

Cumprimentos;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sent

Quando faço:

 parser.parse(r, callback, false);

dá a seguinte exception:

"_implied_=true

_implied_=true

_implied_=true"

(mas eu não tenho ciclo nenhum, ele apenas faz o parse apenas 1 vez e dá logo estas três linhas iguais)

at:

Exception in thread "main" javax.swing.text.ChangedCharSetException

at javax.swing.text.html.parser.DocumentParser.handleEmptyTag(DocumentParser.java:172)

at javax.swing.text.html.parser.Parser.startTag(Parser.java:413)

at javax.swing.text.html.parser.Parser.parseTag(Parser.java:1943)

at javax.swing.text.html.parser.Parser.parseContent(Parser.java:2061)

at javax.swing.text.html.parser.Parser.parse(Parser.java:2228)

at javax.swing.text.html.parser.DocumentParser.parse(DocumentParser.java:105)

at javax.swing.text.html.parser.ParserDelegator.parse(ParserDelegator.java:84)

at soccerstats.exemple.main(exemple.java:28)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.