Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1346 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°208213
Erwanfr
Posté le 03-09-2002 à 19:57:30  profilanswer
 

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+

mood
Publicité
Posté le 03-09-2002 à 19:57:30  profilanswer
 

n°208218
Erwanfr
Posté le 03-09-2002 à 20:13:29  profilanswer
 

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

n°208219
gm_superst​ar
Appelez-moi Super
Posté le 03-09-2002 à 20:14:04  profilanswer
 

On mange !

n°208221
Erwanfr
Posté le 03-09-2002 à 20:17:06  profilanswer
 

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

n°208226
gm_superst​ar
Appelez-moi Super
Posté le 03-09-2002 à 20:29:15  profilanswer
 

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

n°208227
taureau
Posté le 03-09-2002 à 20:31:42  profilanswer
 

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  ;)

n°208229
Erwanfr
Posté le 03-09-2002 à 20:40:20  profilanswer
 

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
 
++

n°208231
Erwanfr
Posté le 03-09-2002 à 20:42:40  profilanswer
 


 

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
n°208233
gm_superst​ar
Appelez-moi Super
Posté le 03-09-2002 à 20:44:19  profilanswer
 

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

n°208234
gm_superst​ar
Appelez-moi Super
Posté le 03-09-2002 à 20:47:32  profilanswer
 

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
mood
Publicité
Posté le 03-09-2002 à 20:47:32  profilanswer
 

n°208235
taureau
Posté le 03-09-2002 à 20:47:34  profilanswer
 

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

n°208801
stef_dober​mann
Personne n'est parfait ...
Posté le 04-09-2002 à 17:34:45  profilanswer
 

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...
n°208917
Tentacle
Posté le 04-09-2002 à 22:11:24  profilanswer
 

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.
 

n°221508
pospos
Posté le 27-09-2002 à 19:49:33  profilanswer
 

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!

n°707224
sire de Bo​tcor
Armorican way of life
Posté le 23-04-2004 à 15:17:02  profilanswer
 

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
n°707413
sire de Bo​tcor
Armorican way of life
Posté le 23-04-2004 à 17:33:06  profilanswer
 

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

n°707536
burgergold
5$? va chez l'diable!
Posté le 23-04-2004 à 21:32:15  profilanswer
 

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

n°707641
chevket
Posté le 24-04-2004 à 11:49:17  profilanswer
 

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
n°707651
chaica
Posté le 24-04-2004 à 12:05:08  profilanswer
 

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?

n°707867
pospos
Posté le 24-04-2004 à 22:30:30  profilanswer
 

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" );

n°708490
chevket
Posté le 26-04-2004 à 12:34:34  profilanswer
 

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

n°729769
bill_clint​on
nonon j'ai pas de stagiaire ..
Posté le 18-05-2004 à 02:41:53  profilanswer
 

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
n°729824
pospos
Posté le 18-05-2004 à 09:18:45  profilanswer
 

la tu la telecharge deux fois: getprint et getstore!

n°740868
Atulya
Posté le 26-05-2004 à 23:34:41  profilanswer
 

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!

n°740877
burgergold
5$? va chez l'diable!
Posté le 26-05-2004 à 23:45:39  profilanswer
 

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


---------------
http://www.boincstats.com/signature/user_664861.gif
n°740952
malcolm x
Posté le 27-05-2004 à 02:08:01  profilanswer
 

Burgergold a écrit :

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


 
explique toi ca m'interesse aussi !

n°740960
burgergold
5$? va chez l'diable!
Posté le 27-05-2004 à 03:40:46  profilanswer
 

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
n°742110
malcolm x
Posté le 27-05-2004 à 18:39:44  profilanswer
 

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:

n°742115
Atulya
Posté le 27-05-2004 à 18:46:06  profilanswer
 

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...

n°742535
burgergold
5$? va chez l'diable!
Posté le 28-05-2004 à 04:32:46  profilanswer
 

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


---------------
http://www.boincstats.com/signature/user_664861.gif
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

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

 

Sujets relatifs
Test de ma page SVP... (xhtml inside)Inclure une page qui affiche des variables.
mettre des page mes page html sur mon site en php comment kon fait?[PHP-MySQL] Rediriger vers une page une fois le formulaire envoyé.
[PHP-MySQL] Récupérer une valeur de menu déroulant.[ CDDB ] Un script bash permettant de recupérer des données cddb ?
Fermer une page après début de téléchargement...ou impressiontroll perl vs php
[HTML] Mise en page en TABLO ! PB tres bizar ! A l'aide !!probleme d'affichage d'un fond sur une page wen
Plus de sujets relatifs à : [Perl] Appeler une page web et recupérer le source


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR