2008-08-28 17 views
23

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

+3

posible duplicado de http://stackoverflow.com/questions/238547/how-do-you-programmatically-download-a-webpage-in-java – jjnguy

Respuesta

32

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(); 
}catch (Exception ex) { 
    ex.printStackTrace(); 
} 
System.out.println(content); 

Pero no estoy seguro si hay una manera mejor.

+5

Por qué "\\ Z" ? ¿No es un EOF solo en Windows? Solo estoy adivinando aquí. – greenoldman

+0

Tenga cuidado con el alto rendimiento al usar esto. – qwertzguy

+0

¿Por qué usas "\\ Z"? ¿Qué hace? Intenté sin eso, no funcionó. –

2

Acabo de salir this post in your other thread, aunque lo que tienes arriba también podría funcionar. 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: ¿Ha olvidado el enlace;)

+0

Aparentemente también debe instalar el archivo JAR :) –

20

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 en la otra solución (s) proporcionado son más eficientes o no.

+0

¿No necesita incluir lo siguiente? import java.io. * import java.net. * –

+1

Claro, pero son core java muy simple. En cuanto al código real, las declaraciones de importación se omiten para mayor claridad. –

+0

después de 'while', ¡también debe mostrar el contenido del búfer! ¡o escribe un método donde lo lees! – rupinderjeet

2

Si bien no vainilla-Java, ofreceré una solución más simple. Utilice maravilloso ;-)

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