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

avec Java Discussion :

récuperer une page web en java


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut récuperer une page web en java
    Bonjour,

    j'ai une méthode qui me permet de récupérer le code html d'une page web, cela fonctionne pour beaucoup de pages, mais pas pour le resultat d'une recherche avec google image

    J'aimerais, lorsque je fais une recherche d'image avec google, récpérer le code html de la page résultat, mais ma méthode ne me le permet pas.

    Ce qui me semble le plus étrange, c'est que la méthode fonctionne pour la page : http://images.google.fr/imghp, mais pas pour la page http://images.google.fr/images?q=desert

    voici le code

    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
    public class recuperateurHtml 
    {
    	URL url;
    	URLConnection connexion;
    	String codeHtml;
     
    	public recuperateurHtml (String adresse)
    	{
    		codeHtml = null;
     
    		try {url = new URL(adresse);} 
    		catch (MalformedURLException e) {e.printStackTrace();}
     
    		try {connexion = url.openConnection();}
    		catch (IOException e) {e.printStackTrace();	}
    	}
     
    	public String recupererHtml() 
    	{
     
    		StringBuilder build = new StringBuilder();			
     
    		try
    		{
    			InputStream in = connexion.getInputStream();	//création d'un flux
    			int c = in.read();								//lecture du premier bit
     
    			while (c != -1) 								// tant que c n'est pas egale au bit indiquant la fin d'un flux...
    			{
    				build.append((char) c);						// on l'ajoute dasn le StringBuilder...
    				c = in.read();								// on lit le suivant
    			}
             } 	
    		catch (IOException e){e.printStackTrace();}
    		codeHtml = build.toString();						// on retourne le code de la page
    		return codeHtml;
    	}
     
    }

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Quelle est la page envoyée ? L'erreur ?
    Un "ça ne marche pas" est insuffisant

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    voici le main() que j'execute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class testGestionConnexion 
    {
     
    	public static void main(String[] args) 
    	{
    		recuperateurHtml r = new recuperateurHtml("http://images.google.fr/images?q=desert");
    		System.out.println(r.recupererHtml());
    	}
     
    }
    et voici les erreurs qui s'affichent dans la console de eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    java.io.IOException: Server returned HTTP response code: 403 for URL: <a href="http://images.google.fr/images?q=desert" target="_blank">http://images.google.fr/images?q=desert</a>
    	at sun.net.<a href="http://www.protocol.http.HttpURLConnection.getInputStream(Unknown" target="_blank">http://www.protocol.http.HttpURLConn...Stream(Unknown</a> Source)
    	at recuperateurHtml.recupererHtml(recuperateurHtml.java:31)
    	at testGestionConnexion.main(testGestionConnexion.java:8)
    C'est une erreur 403, comme si il y avait un problème de droit d'accès à la page, mais si je tappe la même URL dans un navigateur, la page est affichée sans le moindre problème.

    j'espère que ces infos vous aiderons à mieux cerner le problème.

    merci

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 864
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 864
    Points : 3 437
    Points
    3 437
    Par défaut
    Salut,

    Et si tu utilises l'URL de Google Image .com :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://images.google.com/images?hl=en&q=desert&btnG=Search+Images&gbv=2
    A+

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    au départ, j'ai essayé avec l'URL complète, mais j'avais la même erreur, j'ai donc essayé de réduire l'URL au maximum, mais ça ne change rien.

    Par contre, l'URL que j'utilise dans mon code est valide, elle affiche la page de résultat de google image pour une recherche sur le mot desert

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Si c'est une 403 essaye éventuellement d'utiliser un proxy, tu as une ip fixe?

  7. #7
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Peut être le user-agent ?

    Par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    URL url = new URL("http://www.google.com");
    URLConnection connection = url.openConnection();
    connection.setRequestProperty("User-Agent", "Firefox/1.0.4");
    Et ainsi de suite.

  8. #8
    Expert éminent sénior
    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
    Points : 48 804
    Points
    48 804
    Par défaut
    Soit google t'interdit l'accès sur base de ton user-agent, soit il requiert que tu passe d'abord par la page de requete avant d'aller à la page résultat et utilise des cookies ou autre système pour çà. Ca m'a tout l'air d'un truc de google pour éviter que des applis externes pompent sur leur interface.

    Au fait, essaie d'utiliser common-http-client de jakarta, il est beaucoup plus souple et peux vraiment se comporter comme un navigateur.

  9. #9
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    C'est un problème de header. Google vérifie probablement un paramètre comme le referer ou la méthode de requête. Le mieux est encore de sniffer ce que tu envoies et reçois via Firefox à l'aide de wireshark par exemple, et d'utiliser des sockets pour reproduire exactement le même flux de données.

Discussions similaires

  1. Feuille Excel liée à une page Web en JAVA
    Par Fred3786 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2014, 19h38
  2. comment lire d'une page web avec java
    Par midouche dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 06/02/2013, 18h49
  3. Etat dans une page web en Java
    Par kewatar dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 31/05/2011, 16h12
  4. Scanning dans une page web avec java
    Par Lex Lutteur dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 21/06/2007, 17h29
  5. [Appel URL] appel d'une page web dans 1 Java
    Par c4cf6 dans le forum Applets
    Réponses: 3
    Dernier message: 17/03/2006, 14h13

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