[Perl] Appeler une page web et recupérer le source

Appeler une page web et recupérer le source [Perl] - Perl - Programmation

Marsh Posté le 03-09-2002 à 19:57:30    

Salut, je voudrais appeler une page web et pouvoir en récupérer le source afin de le parser.
Pouvez vous me donner une piste pour cela ?
 
en gros
- appel de la page + paramètre
- au lieu d'afficher le resultat, le stocker en méméoire
- parser la mémoire et recupérer des elements
 
a+

Reply

Marsh Posté le 03-09-2002 à 19:57:30   

Reply

Marsh Posté le 03-09-2002 à 20:13:29    

c'est incompréhensible mon truc ou vous avez pas d'idée :/

Reply

Marsh Posté le 03-09-2002 à 20:14:04    

On mange !

Reply

Marsh Posté le 03-09-2002 à 20:17:06    

bah bonne app alors mais t'touffe pas comme même, on sait jamais tu pourrais peut-etre m'aider pour mon pb

Reply

Marsh Posté le 03-09-2002 à 20:29:15    

Tu te rends compte que ce que tu veux faire est dans le manuel PHP ?
 
http://fr.php.net/manual/fr/features.remote-files.php
 
 
Par contre, écrire un parseur pour toute une page HTML ça va pas être évident.
 
Éventuellement si tu traîtes des documents XHTML tu peux utiliser les fonctions DOM de PHP pour manipuler ton fichier, car le XHTML est du XML

Reply

Marsh Posté le 03-09-2002 à 20:31:42    

gm ça va pas l'aider trop php lui il veut le coder en perl  :D  
 
et bien sur c possible mais bon perl et moi ça fait beaucoup et j'ai pas assez de doitgs pour compter alors je sors  ;)

Reply

Marsh Posté le 03-09-2002 à 20:40:20    

hmmm merci pour vos infos
en php, ba pourquoi pas j'vais jeter un coups d'oeil par là alors :)
 
le parser est pas trop complexe il s'agit juste de recuperer une chaine redondante dans le source renvoyé.
 
j'avais fais la liaison parser -> perl mais si php sait le faire c'est aussi bien
 
++

Reply

Marsh Posté le 03-09-2002 à 20:42:40    


 

Par exemple, vous pouvez suivre l'exemple suivant pour ouvrir un fichier sur un serveur web distant, analyser les résultats pour extraire les informations dont vous avez besoin, et ensuite l'utiliser dans une requête de base de données, ou simplement éditer les informations dans le style de votre site


 
gm, tu t'y est prit comment pour la recherche ?
google, recherche dans le fichier d'aide ou bien tu connaissais l'astuce avant ?


Message édité par Erwanfr le 03-09-2002 à 20:43:34
Reply

Marsh Posté le 03-09-2002 à 20:44:19    

Taureau a écrit a écrit :

gm ça va pas l'aider trop php lui il veut le coder en perl :D  
 
et bien sur c possible mais bon perl et moi ça fait beaucoup et j'ai pas assez de doitgs pour compter alors je sors  ;)



Je sors aussi

Reply

Marsh Posté le 03-09-2002 à 20:47:32    

Erwanfr a écrit a écrit :

gm, tu t'y est prit comment pour la recherche ?
google, recherche dans le fichier d'aide ou bien tu connaissais l'astuce avant ?



Bah je savais qu'il y avait un chapitre sur l'ouverture des fichiers à distance. Par contre c'est un coup de bol que ça traite de l'analyse d'un fichier HTML :D
 
Bon désolé j'avais crû lire [PHP] dans ton sujet, mais je suppose que ceci doit être tout aussi facilement réalisable en Perl.


Message édité par gm_superstar le 03-09-2002 à 20:47:52
Reply

Marsh Posté le 03-09-2002 à 20:47:32   

Reply

Marsh Posté le 03-09-2002 à 20:47:34    

gm revient finalement il veut bien en php  :D  
 
(pardon erwanfr  :D )

Reply

Marsh Posté le 04-09-2002 à 17:34:45    

En Perl faire ca c trop simple
utilise le module LWP, je l'ai fait pour differents
sites et ca marche à merveille, par contre, s'il y a des cookies  
ou d'autres du style il faudrat un peu chercher.
 
Sur le site de www.CPAN.org tu trouvera toutes la doc que tu veux ;)


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 04-09-2002 à 22:11:24    

stef_dobermann a écrit a écrit :

En Perl faire ca c trop simple
utilise le module LWP, je l'ai fait pour differents
sites et ca marche à merveille, par contre, s'il y a des cookies  
ou d'autres du style il faudrat un peu chercher.




 
Voilà un exemple (tiré de la documentation perl sur le module LWP ... cherche un fichier LWP.html dans ton dossier d'installation de perl) :
 

Code :
  1. # Create a user agent object
  2. use LWP::UserAgent;
  3. my $ua = new LWP::UserAgent;
  4. $ua->agent("AgentName/0.1 " . $ua->agent);
  5. # Create a request
  6. my $req = new HTTP::Request POST => "http://forum.hardware.fr/";
  7. $req->content_type('application/x-www-form-urlencoded');
  8. $req->content('match=www&errors=0');
  9. # Pass request to the user agent and get a response back
  10. my $res = $ua->request($req);
  11. # Check the outcome of the response
  12. if ($res->is_success) {
  13.   print $res->content;
  14. } else {
  15.   print "Bad luck this time\n";
  16. }


 
Tu récupères donc dans $res->content le contenu de ta page.
 

Reply

Marsh Posté le 27-09-2002 à 19:49:33    

et avec lwp::simple c'est encore plus simple!
 
ca donne un truc genre:
 
use LWP::Simple;
$source = get("http://www.tralala.fr" );
 
et si t'a rien dans ta variable ben c'est k'ya eu une erreur...
difficile de faire plus simple!

Reply

Marsh Posté le 23-04-2004 à 15:17:02    

pospos a écrit :


avec lwp::simple c'est encore plus simple!
 
use LWP::Simple;
$source = get("http://www.tralala.fr" );


 
euh : ça ne marche pas du tout !
ptêt que ça vient du fait que je sois derrière un proxy ?


Message édité par sire de Botcor le 23-04-2004 à 15:35:00
Reply

Marsh Posté le 23-04-2004 à 17:33:06    

personne ne saurait comment modifier ces deux lignes de codes pour qu'elles supportent le passage par un proxy ?

Reply

Marsh Posté le 23-04-2004 à 21:32:15    

pospos a écrit :

et avec lwp::simple c'est encore plus simple!
 
ca donne un truc genre:
 
use LWP::Simple;
$source = get("http://www.tralala.fr" );
 
et si t'a rien dans ta variable ben c'est k'ya eu une erreur...
difficile de faire plus simple!


 
justement jallais le posté, jai découvert ca aujourd'hui :D

Reply

Marsh Posté le 24-04-2004 à 11:49:17    

Code :
  1. http://www.google.fr/search?q=cach [...] roxy&hl=fr


 
 
 
 
apparement tu pourra pas utiliser LWP::Simple derriere un proxy, d'ailleurs son nom l'indique, c'est des fonctions simples, donc derriere un proxy, c'est pas simple :)
 
il ne te reste plus qu'a utiliser LWP::UserAgent qui d'un autre coté offre des fonctionnalités interessantes (cookie, referer...)


Message édité par chevket le 24-04-2004 à 11:51:44
Reply

Marsh Posté le 24-04-2004 à 12:05:08    

Tu veux faire quoi au final avec ta page parsée? Il existe peut être un programme qui fait déjà ce que tu veux?

Reply

Marsh Posté le 24-04-2004 à 22:30:30    

avec LWP::Simple (et LWP si on ne configure pas le proxy exmplicitement) il faut mettre ses parametres de proxy dans la variable d'environnement "HTTP_Proxy" (et renseigner "NO_Proxy" pour les adresses locales)
 
on peut aussi lme faire localement dans le script:

Code :
  1. use LWP::Simple;
  2. %Env{HTTP_Proxy} = "http://proxy.bidule.fr:81";
  3. $source = get("http://www.tralala.fr" );

Reply

Marsh Posté le 26-04-2004 à 12:34:34    

J'en apprends tous les jours...
:)
trop bien ce topic que j'avais jamais parcouru.

Reply

Marsh Posté le 18-05-2004 à 02:41:53    

pour des récupérations en masse tu peux aussi utiliser getstore(), ce qui te permet de stocker toutes tes pages sur disque et de les découper après, comme ca si tu foires au découpage tu peux toujours recommencer facilement :)
 
du style :
 

Code :
  1. use LWP::Simple;
  2. for ($i = 337540; $i < 2500000; $i++)
  3. {$u = "http://www.machin.net/cgi?a=".$i;
  4. print $u."\n";
  5. if (is_success(getprint($u)))
  6. {$fich = $i.".htm";
  7.   getstore($u, $fich)}}


Message édité par bill_clinton le 18-05-2004 à 02:45:55
Reply

Marsh Posté le 18-05-2004 à 09:18:45    

la tu la telecharge deux fois: getprint et getstore!

Reply

Marsh Posté le 26-05-2004 à 23:34:41    

system("lynx -term=vt100 -source $url > $pagesource\n" )
en fait jutilise ca pour recuperer une page source, pcq la cde wget ne marchait pas.
Est-ce possible que je ne recupere pas la meme page source que quand je fais un copier coller de ma page source manuellement?
J'ai aussi un programme qui parse la page, et dans un cas il marche (copier coller) et pas dans l'autre (source recupere avec lynx)... arf!
Merci a ceux qui sauront m'eclairer de leur lumiere!

Reply

Marsh Posté le 26-05-2004 à 23:45:39    

pk tu utilise lynx quand ya des fonctions propres à perl pour le faire...


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 27-05-2004 à 02:08:01    

Burgergold a écrit :

pk tu utilise lynx quand ya des fonctions propres à perl pour le faire...


 
explique toi ca m'interesse aussi !

Reply

Marsh Posté le 27-05-2004 à 03:40:46    

merde vous avez lu le topic? ca montre comment récupérer le contenu html d'un url par des modules perl!
 

Code :
  1. use LWP::Simple;
  2. $source = get("http://www.tralala.fr" );


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 27-05-2004 à 18:39:44    

Burgergold a écrit :

merde vous avez lu le topic? ca montre comment récupérer le contenu html d'un url par des modules perl!
 

Code :
  1. use LWP::Simple;
  2. $source = get("http://www.tralala.fr" );




 
bah de ce que j'en avais compris, les gars etaient pas tous d'accord sur la methode a employer  :ange:

Reply

Marsh Posté le 27-05-2004 à 18:46:06    

si !!!
j'ai lu, j'ai essaye, et ai pas reussi ;-( (j'dis pas que ca marche jamais..)
avec get et wget, j'obtiens rien! Je cherche a recuperer le source d'une page qui est le resultat d'une recherche... C'est peut etre ca le hic...

Reply

Marsh Posté le 28-05-2004 à 04:32:46    

jai deja test sur un cgi avec des paramètres et ca fonctionne #1


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed