IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

[perl] Recherche tags HTML dans un fichier -> array


Sujet :

Web Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [perl] Recherche tags HTML dans un fichier -> array
    Salut a tous, je suis en train de debuter en PERL. Mais je bloque vraiment sur les expressions regulières.
    je suis en train de construire un script qui va chercher un document HTML, doit transformer tout le code en une seule ligne, et apres rechercher tout ce qui est tag de fichiers externes (jpg, gif, png, swf etc...), et les metres dans un Array.

    Bon, en fait je bloque car je sais pas comment faire le matching extact de tout ce type de fichiers, puis metre le resultat dans un Array...

    Si quelqu'un pourait me metre sur la piste, ça serait vraiment simpas...
    Merci d'avance

    // Ruben

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Hello

    Puisque tu débutes en Perl, je te conseille de regarder la FAQ Perl et mes cours. Les questions de regexps y sont abordées grâce à l'excellent Djibil et le magnifique 2Eurocents aborde tout sur les arrays.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    GLDavid, Merci d'avoir repondu. Je tient tout d'abord a te feliciter et aux autres redacteurs pour les cours et l'excelente FAQ... Vraiment de très bonne qualité
    J'ai reussi a progresser un peu plus, mais je comprens pas pourquoi je n'arrive pas a recuperer les valeurs dans mon Array....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	my @match=();
     	while ($fichier =~ /img/g) {
    		@match[$a]=$1;	
    		$a++;
    	}
    ps: $fichier correspond a la String de mon fichier HTML

    Apres debug du script, voila ce que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    match[0]=
    match[1]=
    match[2]=
    match[3]=
     
    a=4
    Qu'es ce qui ne va pas ?

  4. #4
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Hello

    Donc, tu veux récupérer les images d'une page HTML ? Il faut dans ce cas mieux réfléchir à ta regexp.
    Néanmoins, pour parser un fichier HTML, tu peux avoir recours à ce module qui fera le gros du travail pour toi : HTML:arser.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Oula... Ça a l'air balaise... Mais bon, je vais essayer

    Merci David pour ton aide. C'est simpas de m'avoir filer un coup de main.

    (Au fait, la sintaxe que j'ai ecrite est bien ecrite ?)

  6. #6
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par ruben
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	my @match=();
     	while ($fichier =~ /img/g) {
    		@match[$a]=$1;	
    		$a++;
    	}
    Qu'es ce qui ne va pas ?
    Plusieurs petits détails

    $1 ne mémorise pas ton motif si tu ne le lui mets pas entre parenthèses dans l'expression rationnelle.

    Par contre, il est évident qu'un match sur /(img)/ ne retournerait qu'une suite de "img" qui n'aurait aucun intérêt !

    Un match sur /img.*?src="(.*?)"/ serait plus pertinent. De plus, une attention particulière à la casse serait bénéfique : rendre le match insensible avec une option i en plus de l'option g.

    Sinon, Perl offre un raccourci pratique pour récupérer tous les matches d'un coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @matches = ($variable =~ m/motif/g);
    Sachant, en outre que @matches, évalué en contexte scalaire nous fournit le nombre d'éléments du tableau


    Bon courage pour la suite, mais il est parfois pratique d'utiliser des modules spécifiques pour la manipulation "propre" des flux HTML

    Et merci au dithyrambique GLDavid pour le gros passage de brosse à reluire
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci 2Eurocents, impecable! Ça Marche comme je le souhaite

    Je suis en train de lire HTML:arser, j'hesite entre les regEX et ce mod.

    En tout cas, je pense pouvoir bientot pouvoir dire: "RESOLU"...
    Voici le code final (encore un peu vert, mais je vais encore le travailler...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    sub MatchingFiles($path){
    	$fichier="";
    	open(FILE,"$path") || die "Impossible d'ouvrir le fichier\n";	
    	while (<FILE>){
    		$fichier=$_;
    	}
    	close FILE;
    	my @match=();
    	@match=($fichier=~/img.*?src="(.*?)"/g);
     
    	$k=0;
    	foreach $val (@match){
    		print $k."» ".$val ."\n";
    		$k++;
    	}
    }
    Merci a tous

    // Ruben

  8. #8
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Citation Envoyé par 2Eurocents
    Et merci au dithyrambique GLDavid pour le gros passage de brosse à reluire
    Ben quoi ??? Y a pas de mal à dire la vérité !!


    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/11/2011, 18h05
  2. [langage] [PERL] prendre des infos dans un fichier log
    Par osiris73 dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2005, 16h42
  3. Réponses: 3
    Dernier message: 29/12/2004, 17h10
  4. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13
  5. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo