Bonjour,
je souhaite récupérer le contenu d'une page web pour le mettre dans un String.
Voici une méthode que j'ai trouvé sur internet :
Si j'écris :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 /** * Méthode permettant d'aspirer le contenu d'un site. * * @param url url du site * @return contenu sous forme de chaines de caractères. */ private static String getData(URL url) { // La fonction pour récupérer le code source de la page... URLConnection conn = null; InputStreamReader in; BufferedReader data; String line; StringBuffer buf = new StringBuffer(); try { conn = url.openConnection(); conn.connect(); in = new InputStreamReader(conn.getInputStream()); data = new BufferedReader(in); while ((line = data.readLine()) != null) buf.append(line + "\n"); return buf.toString(); } catch (IOException e) { throw new RuntimeException(e); } }
le contenu de la page web s'affiche bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 URL http = new URL("http://www.lequipe.fr/"); String fluxHtml = getData(http); System.out.println("page web : " + fluxHtml);
Par contre, avec l'URL http://fr.wikipedia.org/wiki/Commune...a_Haute-Vienne, tous les caractères sont encodés bizzarement.
Voici le contenu de ma console (cf. capture d'écran http://www.servimg.com/image_preview.php?i=6&u=12014371) alors que via mon navigateur, j'obtiens un contenu de page commençant par :
Sur d'autres pages, seuls les accents sont mal encodés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta name="generator" content="MediaWiki 1.15alpha" /> <meta name="keywords" content="Communes de la Haute-Vienne,Limousin,Haute-Vienne,Communes de France,2003,2004,Aixe-sur-Vienne,Ambazac,Anciennes communes de la Haute-Vienne,Arnac-la-Poste,Augne" /> <link rel="alternate" type="application/x-wiki" title="Modifier" href="/w/index.php?title=Communes_de_la_Haute-Vienne&action=edit" /> <link rel="edit" title="Modifier" href="/w/index.php?title=Communes_de_la_Haute-Vienne&action=edit" /> <link rel="apple-touch-icon" href="http://fr.wikipedia.org/apple-touch-icon.png" />
Comment puis-je faire pour récupérer le contenu HTML comme les navigateurs en étant bien interprété ????
Comment puis-je intervenir sur l'encodage ?
Y-a-t-il une solution à mon problème ?
Merci,
F.
Partager