2008-08-28 10 views
23

Ohne die Verwendung einer externen Bibliothek, was ist der einfachste Weg, HTML-Inhalt einer Website in einen String zu holen?Wie hole ich HTML in Java

+3

möglich Duplikat http://stackoverflow.com/questions/238547/how-do-you-programmatically-download-a-webpage-in-java – jjnguy

Antwort

32

ich zur Zeit das bin mit:

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); 

aber nicht sicher, ob es einen besseren Weg.

+5

Warum "\\ Z" ? Ist es nicht ein EOF nur unter Windows? Ich rate nur hier. – greenoldman

+0

Hüten Sie sich vor der hohen Leistung, wenn Sie diese verwenden. – qwertzguy

+0

Warum verwenden Sie "\\ Z"? Was tut es? Ich habe es ohne versucht, es hat nicht funktioniert. –

2

Ich habe gerade 10 verlassen, aber was Sie oben haben, könnte auch funktionieren. Ich denke nicht, dass einer einfacher wäre als der andere. Auf die Apache-Pakete können Sie zugreifen, indem Sie import org.apache.commons.HttpClient ganz oben in Ihrem Code verwenden.

bearbeiten: Vergessen Sie den Link;)

+0

Anscheinend müssen Sie auch die JAR-Datei installieren :) –

20

Das ist für mich gearbeitet hat gut:

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); 
} 

Nicht sicher an, ob die andere Lösung (en) zur Verfügung gestellt, nicht mehr effizient ist oder nicht.

+0

Müssen Sie nicht die folgenden einschließen? import java.io. * import java.net. * –

+1

Sicher, aber sie sind Core Java so sehr einfach. Wie beim eigentlichen Code werden die Importanweisungen zur besseren Übersicht weggelassen. –

+0

nach 'while' sollten Sie auch den Inhalt des Puffers anzeigen! oder schreibe eine Methode, wo du es liest! – rupinderjeet

2

Während nicht Vanille-Java, werde ich eine einfachere Lösung anbieten. Verwenden Sie Groovy ;-)

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