IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Récupérer code html page web


Sujet :

Java

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut Récupérer code html page web
    Bonjour, j'essaie de récupérer le code html d'un page web..

    Le seul problème c'est qu'il me récupère une page web yahoo .

    Donc voici le code utile de mon appli :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    public StringBuffer getWebPage()
    	{
    		URL url = null;
    		try 
    		{
    			url = new URL(this.url);
    		} 
    		catch (MalformedURLException e1) 
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
            URLConnection uc = null;
    		try 
    		{
    			uc = url.openConnection();
    		} 
    		catch (IOException e1) 
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
            BufferedReader in = null;
    		try 
    		{
    			in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
    		} 
    		catch (IOException e1) 
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
     
     
    		String line = null;
    		StringBuffer buffer = new StringBuffer();
    		try 
    		{
    			while ((line = in.readLine()) != null) 
    			{
    				buffer.append(line).append('\n');
    			}
    			in.close();
    		}
    		catch (IOException e) 
    		{
    			e.printStackTrace();
    		} 
     
    		return buffer;
    	}
    Voila et quand j'affiche le buffer j'ai le droit à une page Yahoo.

    Dans une autre partie du code j'ai setter l'url au site wordreference.

    Pouvez vous me dire ce qui cloche??

    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    t'as du te planter dans l'url.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut Re
    Pourtant il me semble que non ...


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
     
     
    public class RetrieveWebPage {
    	String url;
    	String languageOriginal;
    	String languageDestination;
    	String motSearched;
     
    	public RetrieveWebPage(String motSearched, String languageO, String languageD)
    	{
    		this.motSearched = motSearched;
    		this.languageOriginal = languageO;
    		this.languageDestination = languageD;
     
    		if(this.languageOriginal.equals("en") && this.languageDestination.equals("fr"))
    		{
    			this.url = Constant.urlEnToFr+""+this.motSearched;
    		}
    		else
    		{
    			System.out.println("Erreur dans les langages.");
    		}
    	}
     
    	public StringBuffer getWebPage()
    	{
    		URL url = null;
    		try 
    		{
    			url = new URL(this.url);
    		} 
    		catch (MalformedURLException e1) 
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
            URLConnection uc = null;
    		try 
    		{
    			uc = url.openConnection();
    		} 
    		catch (IOException e1) 
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
            BufferedReader in = null;
    		try 
    		{
    			in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
    		} 
    		catch (IOException e1) 
    		{
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
     
     
    		String line = null;
    		StringBuffer buffer = new StringBuffer();
    		try 
    		{
    			while ((line = in.readLine()) != null) 
    			{
    				buffer.append(line).append('\n');
    			}
    			in.close();
    		}
    		catch (IOException e) 
    		{
    			e.printStackTrace();
    		} 
     
    		return buffer;
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public class Constant 
    {
    	public static final  String urlEnToFr = "http://www.wordreference.com/enfr/";
    }
    et le main
    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
     
     
    public class main 
    {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		if(args.length == 3)
    		{
    			/*System.out.println(args[0]);
    			System.out.println(args[1]);
    			System.out.println(args[2]);*/
    			RetrieveWebPage retrieve = new RetrieveWebPage(args[0],args[1],args[2]);
    			System.out.println(retrieve.getWebPage());
    		}
    		else
    		{
    			System.out.println("Erreur dans le nombre d'arguments.");
    		}
    	}
     
    }
    Merci de ton aide...

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    peux tu afficher ton url avant de la télécharger? Au dernière nouvelles, sun n'a pas d'accord avec yahoo, donc sit tu recois un page de yahoo, c'est que tu a demandé une page chez yahoo. Et vérifie que l'url fonctionne dans ton navigateur.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    saturn1@saturn1-desktop:~/workspace/translator$ java main hello en fr
    http://www.wordreference.com/enfr/hello
    <html>
    <head>
    <title>Yahoo!</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta name="robots" content="noindex, nofollow">

    Tu comprends?? Moi je ne comprend pas.. :S

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et ca donne quoi quand tu fait un wget de cette url? ca sent l'entrée dns corrompue, ca m'est déjà arrivé, tu tappe l'url d'un site et t'en a un autre à la place

    Rien d'autre a faire qu'à attendre la correction dans ces cas là.

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut re
    Oui le wget me donna la page yahoo.

    Mais quand je vais sur le site par mon navigateur j'ai le bon site...

    La correction prend combien de temps??

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    les dns sont généralement mis à jour toutes les 24 heures. tu peux toujours essayer de rebooter ta machine si c'est elle qui a la mauvaise entrée.

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut re
    Merci bien pour ces informations !!!

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je viens de faire un test avec wget:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    wget 'http://www.wordreference.com/enfr/hello'
    --2009-07-12 19:58:38--  http://www.wordreference.com/enfr/hello
    Résolution de www.wordreference.com... 208.43.111.195, 208.43.111.197
    Connexion vers www.wordreference.com|208.43.111.195|:80... connecté.
    requête HTTP transmise, en attente de la réponse... 302 Found
    Emplacement: http://yahoo.com [suivant]
    C'est le serveur wordreference.com qui t'envoie sur yahoo. Il se base sur le user agent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    wget 'http://www.wordreference.com/enfr/hello' --user-agent=mozilla
    --2009-07-12 20:01:09--  http://www.wordreference.com/enfr/hello
    Résolution de www.wordreference.com... 208.43.111.197, 208.43.111.195
    Connexion vers www.wordreference.com|208.43.111.197|:80... connecté.
    requête HTTP transmise, en attente de la réponse... 200 OK
    Longueur: 18280 (18K) [text/html]
    Saving to: `hello'
    Donc tu va devoir lui fournir un user agent autre que "java" qui est celui par défaut de url connection. Je ne pense pas qu'on puisse changer le useragent sur url connection, tu risque donc de devoir passer par une librairie comme common http-client par exemple.

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut re
    Nan mais avec Java ça déconne mais aussi avec wget..

    Le wget se base pas sur l'user agent?si?

    Merci de m'expliquer un peu ... =)

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est leur serveur qui se base sur le user agent. Si c'est un browser il renvoient la réponse, si c'est un robot (comme le user-agent "wget" ou "java") ils renvoient vers yahoo. Comme tu peux le voir sur mon exemple, en changeant le user agent de wget j'obtiens la page.

  13. #13
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 788
    Par défaut re
    Très bien merci, j'avais mal lu ton exemple...

    Je vais donc faire des recherches sur

    une librairie comme common http-client

    Mais si tu as des exemples d'utilisations ou un bon site et que tu repasses par là n'hésite pas à me les fournir.. (oui mâche moi le boulot.. :p)

    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer code html d'une page
    Par nicerico dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2014, 11h53
  2. Récupérer code html généré par une jsp
    Par axel119 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/09/2007, 16h17
  3. récupérer code source page HTML
    Par gianni17 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 02/07/2007, 15h47
  4. [MySQL] Récupérer Code HTML généré par PHP
    Par @ngelofdeath dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/04/2006, 21h51
  5. Récupérer code HTML en JS.
    Par Kernel_Panic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/02/2006, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo