Estou querendo baixar o conteúdo de um site, para analisar. O texto está vindo com acentos. Usei uma função replaceAll, mas não resolveu.
Código
package evangelho.dodia;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class EvangelhoDoDia {
private static String removeHTML(String html){
String noTagRegex = "<[^>]+>";
return html.replaceAll(noTagRegex, "").trim();
}
private static String corrigirAcentos(String texto){
String temp = texto;
// a
temp.replaceAll("Ã?", "Á").trim();
temp.replaceAll("ã", "ã").trim();
temp.replaceAll("á", "á").trim();
temp.replaceAll("ã", "ã").trim();
// e
temp.replaceAll("é", "é").trim();
temp.replaceAll("ê", "ê").trim();
temp.replaceAll("é", "é").trim();
// i
temp.replaceAll("Ã", "í").trim();
temp.replaceAll("í", "í").trim();
// o
temp.replaceAll("Õ", "Õ").trim();
temp.replaceAll("ó", "ó").trim();
temp.replaceAll("õ", "õ").trim();
temp.replaceAll("ó", "ó").trim();
// u
temp.replaceAll("ú", "ú").trim();
// consoantes
temp.replaceAll("Ç", "Ç").trim();
temp.replaceAll("ç", "ç").trim();
temp.replaceAll("ç", "ç").trim();
temp.replaceAll("ñ", "ñ").trim();
// caracteres especiais
temp.replaceAll("–", "-").trim();
temp.replaceAll(" ", "").trim();
temp.replaceAll("“", "\"").trim();
temp.replaceAll("â€", "\"").trim();
// limpos para usar
// texto.replaceAll("", "").trim();
// texto.replaceAll("", "").trim();
// texto.replaceAll("", "").trim();
// texto.replaceAll("", "").trim();
// texto.replaceAll("", "").trim();
// texto.replaceAll("", "").trim();
// texto.replaceAll("", "").trim();
return temp;
}
private static String conteudo;
private static 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) {
conteudo += (inputLine + "\n");
}
conteudo = removeHTML(conteudo);
conteudo = corrigirAcentos(conteudo);
System.out.println(conteudo);
br.close();
isr.close();
return conteudo;
} catch (IOException e) {
e.printStackTrace();
}
return url;
}
public static void main(String[] args) throws Exception {
String pagina = "https://www.cancaonova.com/index.php";
capturaHTML(pagina);
}
}
========================
Minhas dúvidas:
-
Por que a função de “replaceAll” não funciona?
-
Tem uma forma mais simples de corrigir os acentos?
Eu testei
private static String ajeitar(String texto) {
String s2;
try {
s2 = new String(texto.getBytes("ISO-8859-1"));
// s2 = new String(texto.getBytes("Windows-1252"));
// s2 = new String(texto.getBytes("UTF-8"));
return s2;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "vazio";
}
}
Mas também não funcionou. Nenhuma das três codificações.
Agradeço desde já pela ajuda e apoio.
Muito obrigado.