Destrinchar o código html com Java

16 respostas
T

Garela, estou com uma dúvida e se alguém puder me ajudar ficarei grato.
Estou fazendo uma aplicação e uma da funçoes dela é capturar código Html. A captura do código eu ja estou fazendo, só que vem o código completo, mas minha dificuldade está em capturar somente um pedaço do código e não o código todo.

16 Respostas

J

Você pode trabalhar com os métodos da classe String para ir capturando apenas o que você quer (olha o indexOf, substring, charAt)
Ou então fazer a pesquisa/captura através de expressões regulares.

V

Da um olhada em Regex também.

P

Veja se isso te ajuda:

private static String removeHTML(String html){
    String noTagRegex = "<[^>]+>";
    return html.replaceAll(noTagRegex, "").trim();
}
G

tasio, como você obteve o código HTML?

Obrigado.

T

Fala Guidam,
cara eu usei a classe
URL e URLConnection(que passo como parametro a pagina que eu quero que ela capture) do java.net.URL;
a ImputStreamReader(pra ler oque a URL trouxe) da java.io e
BufferedReader(para ler linha a linha pra eu poder trabalhar com o código) tbm do java.io

Se precisar de alguma coisa estamos aí…!

G

Obrigado tasio,

Veja se pode me ajudar.
Peguei esse codigo aqui no GUJ, mas não sei que formato que passo como parametro.
Estou passando a seguinte uriStr: http://localhost:8080/aplicacao/jsp/teste/index.jsp , mas o retorno é vazio.

public static String getText(String uriStr) {

final StringBuffer buf = new StringBuffer(1000);

try {

HTMLDocument doc = new HTMLDocument() {

public HTMLEditorKit.ParserCallback getReader(int pos) {

return new HTMLEditorKit.ParserCallback() {

public void handleText(char[] data, int pos) {

buf.append(data);

buf.append(’\n);

}

};

}

};

URL url = new URI(uriStr).toURL();

URLConnection conn = url.openConnection();

Reader rd = new InputStreamReader(conn.getInputStream());

EditorKit kit = new HTMLEditorKit();

kit.read(rd, doc, 0);

} catch (MalformedURLException e) {

} catch (URISyntaxException e) {

} catch (BadLocationException e) {

} catch (IOException e) {

}

// Retorna todo o texto encontrado

return buf.toString();

}
T

Guidan, vê se isso te ajuda…

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

public class TextHTML {

static String in;

public String capturaHTML(String url) {

	try {
		//pega a url informada
		URL u = new URL(url);
		//conecta com o servidor da pagina
		URLConnection uc = u.openConnection();
		//retorna a leitura da pagina
		InputStreamReader isr = new InputStreamReader(uc.getInputStream());
		BufferedReader br = new BufferedReader(isr);

		String inputLine;
		//lê todas as linhas da pagina e armazena tudo na variavel in
		while ((inputLine = br.readLine()) != null) {
			in += (inputLine + "\n");
		}
		System.out.println(in);
		br.close();
		isr.close();

	} catch (IOException e) {
		e.printStackTrace();
	}

	return url;

}

public static void main(String [] args){
	
	TextHTML th = new TextHTML();
	th.capturaHTML("http://nome da pagina");
	
}

}

F

Vc esta querendo pegar o codigo html ou as informações nele contida?
Eu comecei fazer algo parecido mas era para coletar informações que estão no meu html, tipo fazer um catalago.

Isso que está precisando?

G

Tasio, funcionou obrigado!

Fnascimento, estou querendo pegar o codigo HTML, o código do tasio funcionou pra isso.

T

Blz cara, qualquer coisa estamos aí. E aproveito tbm pra agradecer as dicas da galera aí que responderam minha dúvida… valeu…

D

Galera, acostumem-se a buscar por alguma solução já pronta ao invés de reinventar a roda. Uma busca rápida por Java+HTML+Parser no Google retornou a seguinte URL: http://htmlparser.sourceforge.net/.

V

Talvez o que ele queira seja algo um pouco mais simples.
Eu faço da seguinte forma.
por exemplo se eu quisesse capturar o título da pagina retornada :

String resultado = new String();//resposta do servidor;

int comeca = resultado.indexOf("<title>")+7; int termina = resultado.indexOf("</title>",comeca); String titulo = resultado.substring(comeca,termina);

N

Estou precisando pega um valor depois da barra da url
www.sucessoextra.com.br/meu nome ou codigo

como posso fazer isso sem colocar o /? no final e como capitura essa valor para puxa essa informacao do Bd caso nao tenha retorna para a pagina principal

exem.

se eu entra com a url www.sucessoextra.com.br/006101 ou www.sucessoextra.com.br/nogueiramaier e se nao acha essa referencia no banco de dados retornar para pagina principal e nao da erro 404
sao duas perguntas
como capitura o valor e verificar se esse valor existe se existe ele vai aparece o nome e os dados da pessoa ou retonar para a pagina principal com os valor do compo padrao.

Sou novo em PHP estou comecando a estudo mais nao achei referencia sobre essa assunto ainda na net

grato
nogueria Maier

J

Pedrosa:
Veja se isso te ajuda:

private static String removeHTML(String html){ String noTagRegex = "<[^>]+>"; return html.replaceAll(noTagRegex, "").trim(); }


kara nao deu certo esse codigo nao aki, nao sei pq, alguma ideia? capturei o html com o codigo do rapaz ai tranquilo foi, e depois pasei ele para essa função sua…

G

Olha só, num trabalho da faculdade q eu fiz onde trabalhei com parse de HTML usei a biblioteca Jericho. Vale dar uma conferida.

J

Pedrosa:
Veja se isso te ajuda:

private static String removeHTML(String html){ String noTagRegex = "<[^>]+>"; return html.replaceAll(noTagRegex, "").trim(); }


revendo o codido consegui fazer funcionar mas tive q usar um caracter por vez tipo: String noTagRegex = “<”; depois String noTagRegex = “>”;
ai funcionou agora tudo junto nao …

Criado 8 de janeiro de 2008
Ultima resposta 2 de dez. de 2009
Respostas 16
Participantes 11