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

Entrée/Sortie Java Discussion :

[Reseau] Récupérer le code source d'une URL


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut [Reseau] Récupérer le code source d'une URL
    Bonjour,
    j'essaye de faire un programme me permettant de downloader directement les images dans <google images>

    De ce fait il me faut récupérer le code source des pages afin de les parser et d'obtenir les images en questions.

    J'ai une fonction qui me permet de récupérer une image facilement (ça marche bien :-) et une fonction pour récupérer le code qui ne fonctionne qu'avec les adresses genre .../blurp.html mais pas avec qqchose du genre :

    http://images.google.ch/images?q=ours&hl=fr&lr=&sa=N&tab=wi

    où il me sort une erreur http 403

    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
     
      public static String getSource(String s)
      throws Exception
      {
        URL url = new URL(s);
     
        InputStream in = new BufferedInputStream(url.openStream());
        ByteArrayOutputStream out = new ByteArrayOutputStream();
     
        byte[] buffer = new byte[4096]; 
     
        for (int read=0;(read=in.read(buffer))!=-1;out.write(buffer,0,read));
        return out.toString();
      }
    Est-ce faisable (sûrement parce qu'il est possible d'afficher la source avec firefox) et si oui comment ?


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Une erreur HTTP 403 indique qu'il y a des restrictions d'acces sur les repertoires ... Il y a peut etre une gestion d'authentification permettant d'acceder au repertoire images auquel tu veux accéder...

    Enfin c'est une idée...
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut 403 forbidden
    oui effectivemment lorsqu'il y a un 403 c'est qu'on est pas censé avoir les droits.

    D'où la question : comment fait mon navigateur pour récupérer le code source ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Plus compliqué que prévu
    Après avoir réfléchis un peu plus à la question je me suis décidé à regarder le traffic avec Ethereal et voici ce qui se passe :

    il y d'abord une première requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     GET /images?q=ours&hl=fr&lr=&sa=G&imgsz=xxlarge
    Ensuite google envoit plusieurs paquet G-ziper qui doivent toutes les infos de la page à afficher.

    Enfin y a plein de GET qui sont envoyés correspondant aux emplacements des fameuses images.

    En clair, y a encore du pain sur la planche...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Créer une requête GET
    D'après ce que j'ai pu lire, google n'a pas trop envie qu'on utilise des bots pour pomper par exemple des images. De ce fait, je suppose qu'il regarde qui est le User-Agent qui envois la requête et interdit les truc du genre java....

    Il va donc falloir que j'écrive un code me permettant de construire de toute pièce ma requête GET et la réception de la réponse avec des sockets... a moins qu'il y ait moyen de changer le User-Agent (Personnellement j'ai pas trouver comment faire)

    Si qqn possède par hasard déjà un code semblable je serais heureux de pouvoir l'obtenir afin de vérifier si cette fois ça peut marcher ... :

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Tu peux tenter de modifier directement ton user agent avec un appel genre :
    Properties systemProperties = System.getProperties ();
    systemProperties.setProperty ("http.agent", "Mozilla/4.0 (compatible ...");

    Regarde la valeur complète de ton user agent IE ou mozilla en capturant avec ethereal.
    Le hic c'est que java te rajoute quand même java/1.xxx à la fin du user agent et ça, je ne sais pas comment le supprimer.
    Reste plus qu'à espérer que le regex employé par google ne soit pas du type ".*java.*".

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Ha enfin :lol:
    Merci,
    cette fois ça fonctionne, visiblement ils cherchent pas trop loin.

    Maintenant il me reste qu'à récupérer les adresses en jouant un peu avec lers String (ce qui est toujours agréable)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    Merci de penser à cliquer sur le bouton Résolu.
    --Miss Gaëlle--

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

Discussions similaires

  1. Récupérer le code source d'une page HTML
    Par phyn04 dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 24/11/2016, 14h45
  2. Récupérer le code source d'une page Internet
    Par sango85 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/11/2008, 09h02
  3. Récupérer le code source d'une page distante
    Par audran12 dans le forum Langage
    Réponses: 6
    Dernier message: 23/04/2008, 22h23
  4. récupérer le code source d'une procédure stockée
    Par mike00 dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 13/06/2007, 11h31
  5. Récupérer le code source d'une page web
    Par glRaZ dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/12/2004, 09h16

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