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

Langage PHP Discussion :

récuperation de source HTML


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut récuperation de source HTML
    bonjour

    je cherche à recuperer le source HTML de ce qui affiché à l'ecran connaissant l'url,
    en PHP et sous forme de fichier

    dans la pluspart des cas, ca fonctionne bien,

    soit avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $file_src = file_get_contents($my_url );
    soit avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $fp=@fopen($my_url,"r");
                    if($fp)    
    			  {   while(!feof($fp)) { $file_src  .= fgets($fp,1024);  } }
    soit encore, avec un appel de fonction CURL

    Cependant , pour quelques cas, ca ne fonctionne pas :

    le fichier obtenu par l'une des 3 methodes precedentes n'est pas le meme que le fichier obtenu en faisant Ctrl U à l'ecran ( je suis sous google chrome)

    deux exemples où ça ne coïncide pas :

    http://www.econologie.com/forums/cha...on-vt7103.html

    et

    acheter une maison ecologique - Recherche Google

    Dans le premier cas , par programmation, le fichier est réduit à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
    <html><head> <title>403 Forbidden</title> </head>
    <body> <h1>Forbidden</h1>
     <p>You don't have permission to access /forums/chauffage-bois-et-pollution-vt7103.html on this server.</p> 
    </body></html>
    dans le deuxieme cas , le fichier est presque egal au vrai source, mais pas tout à fait


    Savez vous pourquoi ils sont différents ?

    et
    aussi comment récupérer le vrai source ? ?

    Merci de vos reponses

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    il faut rajouter les entete de navigateur (user-agent, accept ...),

    mais bon t'as pas a faire du datamining c'est très mal vu, si tu veux récupérer des donnée utilise les API des sites, si y'en a pas c'est qu'ils ne veulent pas que l'on récupères les données.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    je vais chercher par les API ,

    mais, à quel endroit faut-il rajouter les entete de navigateur (user-agent, accept ...) ?

    pour le vrai source, celui qu'on obtient par ctrl u,

    il y a t il un moyen sous PHP de simuler une action ou une sequence
    genre Ctrl U , Ctrl S , ... ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 24
    Points : 15
    Points
    15
    Par défaut
    merci stealth35

    ca s'ameliore

    j'ai ajouté dans la fonction Curl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla' ) ;
    et ca a resolu le cas pour l'url du 1er exemple (econologie.com)

    par contre , pour le 2eme exemple, celui avec google, rien de changé

    Et puis, j'ai un 3eme exemple, un peu different; pour ce troisieme cas, pas de changement non plus
    ( et pour l'instant pas de 4eme exemple )

    dans le 3eme cas , la bizzarerie est que
    si je lance la fonction curl en local ( c'est à dire avec easyphp ) , c'est OK, je recupere bien le source
    par contre, si je lance la fonction curl via le serveur distant (en l'occurence amen.fr), ca ne marche pas ;

    là le résultat est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
    <html><head> <title>403 Forbidden</title> </head>
     <body> <h1>Forbidden</h1> 
    <p>You don't have permission to access / on this server.</p>
     <p>Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.</p> </body></html>
    enfin plutot etait, avant d'ajouter CURLOPT_USERAGENT

    car apres il est devenu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
     <html><head> <title>403 Forbidden</title> </head>
     <body> <h1>Forbidden</h1> 
     <p>You don't have permission to access  /forum/showthread.php   on this server.</p>
     <p>Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.</p> </body></html>
    la nuance n'est pas enorme, mais ca veut peut etre dire qqchose ?

    ---------------------------
    tu m'avais dit de voir aussi l' entete de navigateur ( accept ) et ... pour d'autres
    j'ai essayé differentes choses, mais sans certitudes de bien comprendre,
    et ca n'a rien donné ....

    que fallait-il mettre, à ton avis ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    met tout les entete de navigateur récupère celle du tien si tu veux pas t’embêter, ça correspond a pas mal de $_SERVER['HTTP_']

Discussions similaires

  1. Récuperer un liste html liste
    Par amine1980 dans le forum Struts 1
    Réponses: 1
    Dernier message: 11/05/2006, 16h23
  2. [JSP]sources html + adresse physique des fichiers
    Par hinanui dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/03/2006, 20h03
  3. [RegEx] Problème pour enlever les tags javascript d'une source HTML
    Par Easyweb dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2006, 03h10
  4. [Tableaux] Récupérer source html
    Par philippef dans le forum Langage
    Réponses: 16
    Dernier message: 10/10/2005, 16h52

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