lire une page HTML en PERL - Programmation
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...
Marsh Posté le 06-03-2002 à 21:21:31
si si on peut mais pas avec open 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
Marsh Posté le 06-03-2002 à 21:24:43
SteF_DOBERMANN a écrit a écrit : si si on peut mais pas avec open 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
Marsh Posté le 06-03-2002 à 21:33:51
c normal et la sécurité boredel de merde, c pour les chiens
[jfdsdjhfuetppo]--Message édité par SteF_DOBERMANN--[/jfdsdjhfuetppo]
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 |
de quoi tu parles?
Marsh Posté le 06-03-2002 à 23:11:36
de l'open sur un site qui ne t'appartient pas !!
bien sur
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 |
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
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.
Marsh Posté le 07-03-2002 à 11:20:49
SteF_DOBERMANN a écrit a écrit : si si on peut mais pas avec open 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
Marsh Posté le 07-03-2002 à 11:36:32
En cherchant un peu sur le net ( ) 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]
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 !
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 !
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).
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
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.
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
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 ?
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 )
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 !