Pregunta

Sin el uso de ninguna biblioteca externa, ¿cuál es la forma más sencilla de recuperar el contenido HTML de un sitio web en una cadena?

¿Fue útil?

Solución

Actualmente estoy usando esto:

String content = null;
URLConnection connection = null;
try {
  connection =  new URL("http://www.google.com").openConnection();
  Scanner scanner = new Scanner(connection.getInputStream());
  scanner.useDelimiter("\\Z");
  content = scanner.next();
  scanner.close();
}catch ( Exception ex ) {
    ex.printStackTrace();
}
System.out.println(content);

Pero no estoy seguro de si hay una manera mejor.

Otros consejos

Esto ha funcionado bien para mí:

URL url = new URL(theURL);
InputStream is = url.openStream();
int ptr = 0;
StringBuffer buffer = new StringBuffer();
while ((ptr = is.read()) != -1) {
    buffer.append((char)ptr);
}

No estoy seguro de si las otras soluciones proporcionadas son más eficientes o no.

Acabo de irme esta publicación en tu otro hilo, aunque lo que tienes arriba podría funcionar también.No creo que ninguno sea más fácil que el otro.Se puede acceder a los paquetes de Apache simplemente usando import org.apache.commons.HttpClient en la parte superior de su código.

Editar:Olvidé el enlace ;)

Si bien no es Vanilla-Java, ofreceré una solución más simple.Usa Groovy ;-)

String siteContent = new URL("http://www.google.com").text

No es una biblioteca, sino una herramienta llamada curl que generalmente se instala en la mayoría de los servidores o que puedes instalar fácilmente en ubuntu mediante

sudo apt install curl

Luego busque cualquier página html y guárdela en su archivo local como un ejemplo.

curl https://www.facebook.com/ > fb.html

Obtendrá la página de inicio html. También puede ejecutarla en su navegador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top