Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 15h27   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 20
Points : 3
Points : 3
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 :
 $file_src = file_get_contents($my_url );
soit avec
Code :
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

Click to View Search Results for acheter une maison ecologique - Recherche Google acheter une maison ecologique - Recherche Google

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

Code :
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
zephira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 15h36   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
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.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 15h51   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 20
Points : 3
Points : 3
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 , ... ?
zephira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 15h55   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
http://php.net/manual/fr/function.st...ext-create.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 20h07   #5
Invité de passage
 
Inscription : juillet 2008
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 20
Points : 3
Points : 3
merci stealth35

ca s'ameliore

j'ai ajouté dans la fonction Curl
Code :
  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 :
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 :
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 ?
zephira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 09h42   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
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_']
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h20.


 
 
 
 
Partenaires

Hébergement Web