2008-08-28 8 views
23

Sans l'utilisation d'une bibliothèque externe, quel est le moyen le plus simple de récupérer le contenu HTML d'un site Web dans une chaîne?Comment récupérer du code HTML en Java

+3

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

Répondre

32

J'utilise actuellement ceci:

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

Mais pas sûr s'il y a une meilleure façon.

+5

Pourquoi "\\ Z" ? N'est-ce pas un EOF sur Windows seulement? Je devine juste ici. – greenoldman

+0

Méfiez-vous du hit haute performance lors de l'utilisation. – qwertzguy

+0

Pourquoi utilisez-vous "\\ Z"? Qu'est ce que ça fait? J'ai essayé sans ça, ça n'a pas marché. –

2

Je viens de quitter this post in your other thread, bien que ce que vous avez ci-dessus pourrait fonctionner aussi bien. Je ne pense pas que ce soit plus facile que l'autre. Les paquets Apache peuvent être consultés en utilisant simplement import org.apache.commons.HttpClient en haut de votre code.

Modifier: Vous avez oublié le lien;)

+0

Apparemment, vous devez également installer le fichier JAR :) –

20

Cela a bien fonctionné pour moi:

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

Je ne sais pas à savoir si l'autre solution (s) fourni sont plus efficaces ou non.

+0

Vous ne devez pas inclure les éléments suivants? Importer java.io. * Importer java.net. * –

+1

Bien sûr, mais ils sont de base java si simple. En ce qui concerne le code réel, les instructions d'importation sont omises pour plus de clarté. –

+0

après 'while', vous devriez aussi afficher le contenu de la mémoire tampon! ou écrivez une méthode où vous l'avez lu! – rupinderjeet

2

Bien que n'étant pas vanilla-Java, je vais offrir une solution plus simple. Utilisez Groovy

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