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

Langage Perl Discussion :

Récupérer certaines lignes contenu dans un tableau


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut Récupérer certaines lignes contenu dans un tableau
    Bonsoir,

    Voilà j'aimerais savoir comment je pourrais m'y prendre pour récupérer certaines lignes (dont je connais le début et la fin) d'un tableau qui contiendrait le code source d'une page html.

    Merci d'avance pour vos réponses,

    ++

  2. #2
    Membre éprouvé Avatar de krieg
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Par défaut
    Bonjour,
    Pour réaliser cela en perl il n'y a rien de plus simple,
    tu fais un passage sur tous les elements en testant chaque element
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($tab[i] =~ /debut(.*)fin/)

    bye

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Bonjour,

    Tout d'abord merci pour ta réponse. Finalement j'ai préféré stocker le résultat de ma page source dans un fichier (je ne vois pas comment mettre une page source ligne par ligne).

    Cependant je suis bloqué lors du parcours du fichier. Je souhaite mettre des lignes contenu dans la balise <PRE> </PRE> dans un autre fichier, mais le problème c'est que je ne vois pas, dans la pratique, comment lui faire comprendre qu'il doit remplir le fichier que pour les lignes entre les balises <PRE>.

    Merci d'avance pour les conseils et l'aide.

    ++

  4. #4
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Je te conseille vivement d'utiliser un parseur HTML. Par exemple HTML::TreeBuilder ou HTML::Parser (au choix selon la taille de ton HTML et surtout tes préférences).

    Sinon tu peux bien sûr lire le contenu de ton fichier ou de ta page html dans une variable et récupérer l'information qui t'intéresse avec des expressions régulière.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    open my $fh, '<', 'file.html' or die "$!\n";
    my $page = do { local $/; <$fh>};
     
    # ou lire la page en ligne avec :
    # use LWP::Simple;
    # my $page = get('http://www.yourpage.hmtl');
     
    while ( $page =~ m{<pre>(.*?)</pre>}gs ) {
    	# fais ce que tu veux  avec $1, par exemple:
    	print $1;
    }
    Mais tu vas rencontrer de nombreux problème, si tu parse à la main. Par exemple si tes tags pre ont des attributs. Utilise plutôt un des parseurs du CPAN.

    Si tu ne comprends pas une partie du code ci-dessus, n'hésite pas à demander

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Merci pour la réponse.

    En ce qui concerne le parser, je n'ai jamais vraiment cerné qu'est ce que c'était, et donc en quoi cela peut être utile.

    J'ai essayé ton code mais rien ne passe, je n'ai même pas de message d'erreurs. Pourrais-tu le détailler stp ?

    Merci !

    ++

  6. #6
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Si rien ne se passe, c'est que soit tes tags pre sont en majuscule ;-) soit ils ont des attributs.

    Voilà ce que fait le code :

    (1) il ouvre un handler sur le fichier et le passe dans une variable $fh
    (2) lit tout le contenu du fichier et le passe dans $page (c'est un "slurp"; en modifiant localement la variable de fin d'enregistrement $/ pour lire tout le fichier d'un coup et pas ligne à ligne) (il y avait une faute de frappe à cette ligne je l'ai corrigé : il manquait les <>).
    (3) pour chaque match, capture ce qu'il y a entre <pre> </pre>

    Comme je te l'ai dit c'est une mauvaise idée de parser à la main.

    Il vaut mieux utiliser un parseur. Voilà un exemple.

    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
    #!/usr/bin/env perl
    use strict; use warnings;
     
    use HTML::TreeBuilder::XPath;
     
    open my $fh, '<', 'file.html'
    	or die "$!\n";
     
    my $page = do { local $/; <$fh>};
     
    my $tree= HTML::TreeBuilder::XPath->new;
    $tree->parse( $page );
     
    my $nodes = $tree->findnodes( '//pre');
    while ( my $node = $nodes->shift() ) {
    	print $node->as_text();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] problème pour récupérer toutes les lignes contenue dans un select
    Par Baleze dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2012, 20h42
  2. Réponses: 2
    Dernier message: 17/09/2012, 14h57
  3. [PowerShell] Récupérer certaines lignes d'un fichier txt dans un autre
    Par TanKer dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 16/11/2011, 21h31
  4. récupérer une valeur contenue dans une balise TD d'un tableau
    Par Himotep dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2011, 22h48
  5. Réponses: 8
    Dernier message: 30/11/2006, 18h32

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