Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 29-05-2013 11:40:15

peuks
Membre
Inscription : 10-04-2010

Script Perl , récupérer du contenue d'une page web . (en cours)

Bonjour ,


Pour me faire la main avec perl , j'ai décidé de récupérer contenu du site viedemerde.fr. ( les fameux VDM ).
Pour ce faire j'ai récupérer la page web puis traité pour n'avoir que le texte et enfin utiliser un tableau avec une boucle pour m'afficher tout ce qui est contenu entre Aujourd'hui et VDM ( la structure même des vie de merde ) .

Et bien sur cela ne fonctionne pas neutral

Je pense avoir un problème avec la fonction split qui me déforme ma page .


#!/usr/bin/perl

use strict;
use warnings;
use LWP::Simple;
use HTML::TreeBuilder;
use HTML::FormatText;
#use Getopt::Long; #Est ce nécessaire ?

#Page web en txt
my $URL=get("http://viedemerde.fr");
my $Format = HTML::FormatText->new;
my $TreeBuilder = HTML::TreeBuilder->new;
   $TreeBuilder->parse($URL);
my $Pageweb = $Format->format($TreeBuilder);

my $quote="-1";                           # Contient le contenu voulu ( la VDM )  
my @ligne;                            # Tableau contenant toute les lignes de la page (1 ligne par case)
# On récupère chaque ligne dans un tableau.
@ligne = split(/\n/,$Pageweb);

# On parcours tout le tableau.
foreach $_ (@ligne)
{
    if(/Aujourd.+VDM/) # Si la ligne contient Aujourd'hui suivi de 1 ou plusieurs caractères quelconque # suivi de VDM
    {
            $quote=$&;          # On prend uniquement la partie de la ligne qui correspond à l'expression régulière.
            print"\n$quote\n\n"; # Afficher $quote
      last;
    }

}



 

Hors ligne

#2 04-07-2013 14:10:05

jojo_boulix
Membre
Inscription : 04-07-2013

Re : Script Perl , récupérer du contenue d'une page web . (en cours)

Bonjour.

Les textes à chercher sont répartis sur plusieurs lignes. Comme le split sépare les lignes, on ne retrouve jamais à la fois Aujourd et VDM sur un morceau...
Une solution peut être de découper là où on trouve une ligne blanche (et utiliser l'option /s pour une trecherche multi-ligne). J'ai également enlevé le last pour avoir tous les textes.

# On récupère chaque ligne dans un tableau.
@ligne = split(/\n\s*\n/,$Pageweb);

# On parcours tout le tableau.
foreach (@ligne)
{
    if(/(Aujourd.+VDM)/s) # Si la ligne contient Aujourd'hui suivi de 1 ou plusieurs caractères quelconque # suivi de VDM
    {
            $quote=$1;          # On prend uniquement la partie de la ligne qui correspond à l'expression régulière.
            print"\n$quote\n\n"; # Afficher $quote
      #last;
    }

}

Dernière modification par jojo_boulix (04-07-2013 14:10:52)

Hors ligne

Pied de page des forums