Estou tentando fazer um função que pega um pagina HTML e retira todas as tag. Vocês conhecem alguma API que possa me ajudar a fazer isso?
Retirar Tags
10 Respostas
http://java.sun.com/products/jfc/tsc/articles/bookmarks/
http://www.javaalmanac.com/egs/javax.swing.text.html/GetText.html?l=find
ou faz em Python que é mais fácil e depois roda com Jython
:roll:
se você ler todo o texto da pagina HTML em uma string, utiliza o seguinte:
html=html.replaceAll("<[/]*?.+?[/]*?>","");
isto vai simplesmente tirar as tags, não substitui
por
nem nada assim, mas vai remover todas as tags, ou seja, remove tudo o que estiver entre <> podendo ter uma / no inicio ou no fim, assim funciona para HTML e XML
http://www.javaalmanac.com/egs/javax.swing.text.html/GetText.html?l=find
:roll:
Nesse link que tu me passou tem justamente a função que eu preciso, mas não sei porque tem pagina em que ela não funciona
http://www.javaalmanac.com/egs/javax.swing.text.html/GetText.html?l=find
:roll:Nesse link que tu me passou tem justamente a função que eu preciso, mas não sei porque tem pagina em que ela não funciona
dá alguma Exception?
http://www.javaalmanac.com/egs/javax.swing.text.html/GetText.html?l=find
:roll:Nesse link que tu me passou tem justamente a função que eu preciso, mas não sei porque tem pagina em que ela não funciona
dá alguma Exception?
não, só pega o que está entre as tag <TITLE></TITLE>.
A URL que eu usei para teste foi essa:
é porque ela não tem texto, só form elements, você vai ter que acrescentar os métodos handleStartTag e handleEndTag para pegar texto de atributos de form também (input, option, etc)
Mas tem algumas que tem só texto e não funciona. Por exemplo, esta: http://maae.deinf.ufma.br/temp/infonorma/teste.htm
ops… pára tudo, muita calma nessa hora 
o código lança Exception sim, javax.swing.text.ChangedCharSetException, para evitar isso você precisa chamar o método parse:
public void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharacterSet) throws IOException
do HTMLEditorkit.ParserCallBack com o parâmetro negrito setado para true, mas no exemplo que eu passei com inner classes não sei como fazê-lo, por isso rascunhei um outro que deve funcionar:
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
import java.io.*;
import java.net.*;
import java.util.*;
public class MeuParser extends HTMLEditorKit.ParserCallback {
private Writer out;
private int level = 0;
private static StringBuffer buf = new StringBuffer(1000);
public void handleText(char[] text, int position) {
buf.append(text);
buf.append('\n');
}
public static void main(String[] args) {
ParserGetter kit = new ParserGetter();
HTMLEditorKit.Parser parser = kit.getParser();
try {
URL u = new URL("file:///e:/trab/java/2004/guj/teste.html");
InputStream in = u.openStream();
InputStreamReader r = new InputStreamReader(in);
HTMLEditorKit.ParserCallback callback = new MeuParser();
parser.parse(r, callback, true);
System.out.println(buf.toString());
}
catch (Exception e) {
System.err.println(e);
}
}
}
class ParserGetter extends HTMLEditorKit {
public HTMLEditorKit.Parser getParser(){
return super.getParser();
}
}
PS.: você não viu a Exception porque os catch’s estão vazios 
ops… pára tudo, muita calma nessa hora![]()
o código lança Exception sim, javax.swing.text.ChangedCharSetException, para evitar isso você precisa chamar o método parse:
public void parse(Reader in, HTMLEditorKit.ParserCallback callback, boolean ignoreCharacterSet) throws IOException
do HTMLEditorkit.ParserCallBack com o parâmetro negrito setado para true, mas no exemplo que eu passei com inner classes não sei como fazê-lo, por isso rascunhei um outro que deve funcionar:
import javax.swing.text.*; import javax.swing.text.html.*; import javax.swing.text.html.parser.*; import java.io.*; import java.net.*; import java.util.*; public class MeuParser extends HTMLEditorKit.ParserCallback { private Writer out; private int level = 0; private static StringBuffer buf = new StringBuffer(1000); public void handleText(char[] text, int position) { buf.append(text); buf.append(' '); } public static void main(String[] args) { ParserGetter kit = new ParserGetter(); HTMLEditorKit.Parser parser = kit.getParser(); try { URL u = new URL("file:///e:/trab/java/2004/guj/teste.html"); InputStream in = u.openStream(); InputStreamReader r = new InputStreamReader(in); HTMLEditorKit.ParserCallback callback = new MeuParser(); parser.parse(r, callback, true); System.out.println(buf.toString()); } catch (Exception e) { System.err.println(e); } } } class ParserGetter extends HTMLEditorKit { public HTMLEditorKit.Parser getParser(){ return super.getParser(); } }PS.: você não viu a Exception porque os catch’s estão vazios :D
Tá funcionando legal. Você não quebrou um galho e sim uma árvore inteira. Valeu!
Tá funcionando legal. Você não quebrou um galho e sim uma árvore inteira. Valeu!
e o melhor de tudo é que foi no meu 1000º post :mrgreen: