lire une page HTML en PERL

lire une page HTML en PERL - Programmation

Marsh Posté le 06-03-2002 à 19:56:54    

J'ai un script en perl qui ouvre un .html et y recupere les hyperliens.
 
Mon probleme est assez simple: si le .html est sur mon compte sous UNIX, et que le path du .html est du style /home/moncomte/myfile.html, ca marche impec.
 
Par contre, si je teste le script sur une page sur le web, par exemple : $url="http://www.xxx.com/myfile.html",
alors la commande open(file,$url) n a pas la permission d'ouvrir la page !
 
Comment on fait du coup. Car mon but est de coder un crawler qui recupere des pages en les parcourant de liens en liens.
 
Merci pour votre aide !

Reply

Marsh Posté le 06-03-2002 à 19:56:54   

Reply

Marsh Posté le 06-03-2002 à 20:04:16    

chicha a écrit a écrit :

J'ai un script en perl qui ouvre un .html et y recupere les hyperliens.
 
Mon probleme est assez simple: si le .html est sur mon compte sous UNIX, et que le path du .html est du style /home/moncomte/myfile.html, ca marche impec.
 
Par contre, si je teste le script sur une page sur le web, par exemple : $url="http://www.xxx.com/myfile.html",
alors la commande open(file,$url) n a pas la permission d'ouvrir la page !
 
Comment on fait du coup. Car mon but est de coder un crawler qui recupere des pages en les parcourant de liens en liens.
 
Merci pour votre aide !  




 
je suis déjà pas convaincu que l'on puisse utilisé un lien http avec la commande open de PERL... en PHP d'accord, mais en PERL... :)

Reply

Marsh Posté le 06-03-2002 à 21:21:31    

:lol:  :lol:  :lol:  
 
si si on peut mais pas avec open  :ouch: ca marche uniquement en local, pour ouvrir $url="http://www.xxx.com/myfile.html"
 
tu fait un use LWP;
$page = get($url);
 
et dans $page tu as http://www.xxx.com/myfile.html.
ca marche aussi sur  
http://www.xxx.com/myfile.asp
ou autre
 
cherche de la doc sur la LWP c super ce kon peut faire avec :)


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

Marsh Posté le 06-03-2002 à 21:24:43    

SteF_DOBERMANN a écrit a écrit :

:lol:  :lol:  :lol:  
 
si si on peut mais pas avec open  :ouch: ca marche uniquement en local, pour ouvrir $url="http://www.xxx.com/myfile.html"
 
tu fait un use LWP;
$page = get($url);
 
et dans $page tu as http://www.xxx.com/myfile.html.
ca marche aussi sur  
http://www.xxx.com/myfile.asp
ou autre
 
cherche de la doc sur la LWP c super ce kon peut faire avec :)  




 
ok ça d'accord, ya des modules pour ça, mais qu'il n'écrive pas open alors :)

Reply

Marsh Posté le 06-03-2002 à 21:33:51    

c normal et la sécurité boredel de merde, c pour les chiens :??:
 
 :lol:

 

[jfdsdjhfuetppo]--Message édité par SteF_DOBERMANN--[/jfdsdjhfuetppo]


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

Marsh Posté le 06-03-2002 à 21:37:03    

SteF_DOBERMANN a écrit a écrit :

c normal et la sécurité boredel de merde, c pour les chiens :??:
 
 :lol:  
 
 




 
de quoi tu parles?

Reply

Marsh Posté le 06-03-2002 à 23:11:36    

de l'open sur un site qui ne t'appartient pas !!
bien sur :D


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

Marsh Posté le 06-03-2002 à 23:14:03    

merci pour votre aide, je verrais ca demain au taf :)

Reply

Marsh Posté le 06-03-2002 à 23:16:35    

SteF_DOBERMANN a écrit a écrit :

de l'open sur un site qui ne t'appartient pas !!
bien sur :D  




 
bah si il utilise le module dont tu as donné le nom, il n'y aucun problème... et je pense que c'est ce qu'il veut faire.
Pour le open, de toute façon ça ne marcherait pas, faut passer par un ftp :)

Reply

Marsh Posté le 07-03-2002 à 10:58:06    

ca marche pas !
j'ai fait
 
use LWP;
$url="http://www.xxx.com/page.html";
$page=get($url);
print($page);
 
et j'ai l'erreur suivante:
"undifined subroutine... get..."
 
J'ai aussi essaye getc($url) mais $page est vide dans ce cas.

Reply

Marsh Posté le 07-03-2002 à 10:58:06   

Reply

Marsh Posté le 07-03-2002 à 11:20:49    

SteF_DOBERMANN a écrit a écrit :

:lol:  :lol:  :lol:  
 
si si on peut mais pas avec open  :ouch: ca marche uniquement en local, pour ouvrir $url="http://www.xxx.com/myfile.html"
 
tu fait un use LWP;
$page = get($url);
 
et dans $page tu as http://www.xxx.com/myfile.html.
ca marche aussi sur  
http://www.xxx.com/myfile.asp
ou autre
 
cherche de la doc sur la LWP c super ce kon peut faire avec :)  



c'est interdit de poster un lien porno :fou:


---------------
[:the%20real%20ziad]  
Reply

Marsh Posté le 07-03-2002 à 11:36:32    

En cherchant un peu sur le net ( :D ) on trouve des truc comme ça:
 
use LWP::UserAgent;
use HTTP::Request::Common;
 
sub GetDoc {
 
 
local ($Chemin, $Document, $Query_String) = @_;
# On reconstitut l'URL à partir du chemin: www.domaine.ext/répertoire/
# du nom du document: document.pl
# et le cas échéant des paramètre: Param=Exemple&Param2=test
if ($Query_String ne "" ){
 
 
$Complet_URL = "http://" . $Chemin . $Document . "?" . $Query_String;
 
}else{
 
$Complet_URL = "http://" . $Chemin . $Document;  
 
}
my $ua = new LWP::UserAgent;
# C'est ici que l'on devient internet explorer 4 sous windows 98
$ua->agent('Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)';);
 
# Envoi de la demande, récupération de la réponse du serveur
$res = $ua->request(GET $Complet_URL);
 
if ($res->is_success) {
 
 
$Resultat = $res->content;
 
}
$Resultat;
 
}
 
Il ne vous reste donc qu'a appeler la fonction
$MonDocument = GetDoc("www.domaine.ext/répertoire/", "document.pl", "Param=Exemple&Param2=test" );
Et à interpréter $MonDocument

 

[jfdsdjhfuetppo]--Message édité par Deepcore--[/jfdsdjhfuetppo]


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 07-03-2002 à 11:39:01    

J'espere que c une blague... Je ne connais pas xxx.com, desole mais contrairement a certain je ne vais pas sur ce genre de site.
J'ai ecrit xxx comme j'aurais pu ecrire yyy, c'est juste un exemple !

Reply

Marsh Posté le 07-03-2002 à 12:48:54    

Deepcore, j'ai pas l'impression que ton prog liste bien les liens d'une page html referencee par son url... Je dis ca a cause du .pl dans le chemin de l'url.
 
De plus, mon pb vient p-e des proxy a mon taf ? Comment passer outre le cas echeant ?
 
Le get me renvoie tjs une erreur de subroutine non definie malgre le use LWP ();
 
A l'aide ! Sinon je vais etre vire ;) !

Reply

Marsh Posté le 07-03-2002 à 13:51:50    

chicha a écrit a écrit :

Deepcore, j'ai pas l'impression que ton prog liste bien les liens d'une page html referencee par son url... Je dis ca a cause du .pl dans le chemin de l'url.
 
De plus, mon pb vient p-e des proxy a mon taf ? Comment passer outre le cas echeant ?
 
Le get me renvoie tjs une erreur de subroutine non definie malgre le use LWP ();
 
A l'aide ! Sinon je vais etre vire ;) !  




 
Ben non, il liste pas les liens d'une page, il récupére le contenu de la page, après c'est à toi de trouver les liens (faut pas pousser non plus).


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 07-03-2002 à 14:06:25    

excuz g craque.
c t pas ma question !
 
en fait je ne comprend pas pourquoi on a document.pl dand l' url, alors que c un .html que je veux recuperer ?
 
Merci pour ton aide :)

Reply

Marsh Posté le 07-03-2002 à 14:26:18    

chicha a écrit a écrit :

excuz g craque.
c t pas ma question !
 
en fait je ne comprend pas pourquoi on a document.pl dand l' url, alors que c un .html que je veux recuperer ?
 
Merci pour ton aide :)  




 
Parceque là, il appelle un script CGI à priori, mais tu t'en fous. En plus tu peux la bricoler un peu pour qu'elle soit mieux adaptée à ce que tu souhaites.


---------------
"Si ça peut déconner, ça va déconner..."
Reply

Marsh Posté le 07-03-2002 à 16:22:32    

ca devrait te suffir pour commencer :
 
use LWP::Simple;
$page = get("http://www.xxx.com/myfile.html" )
 
 
sinon  
ici : c bien aussi
http://aspn.activestate.com/ASPN/P [...] imple.html
 
ou ya www.CPAN.org

Reply

Marsh Posté le 07-03-2002 à 18:20:18    

en fait non, ca ne marche toujours pas mais je crois avoir une idee... c'est peut-etre a cause du proxy au taf, non ? Et je fais comment dans ce cas ? Car j'ai teste mes scripts sur le serveur en local (sur http://www/ correspondant à l'intranet) et ca marche tankil. Par contre sur http//www.yyy.com/" j'ai une page vide en retour. Un de mes scripts me renvoie meme dans ce cas, "connection time out... http//www.yyy.com:80"
 
Une idee la dessus ?

Reply

Marsh Posté le 07-03-2002 à 18:38:52    

la aucune idée en ce qui concerne les pb de proxy
 
je sais juste que le bout de code que je t'ai donnée fonctionne nikel sous Windows 98 ou Linux, et je l'utilise pour des appli perso (apres amélioration bien sur :D)


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

Sujets relatifs:

Leave a Replay

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