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 :

Problème avec le module TreeBuilder


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Problème avec le module TreeBuilder
    Bonjour,
    je tente de parcourir, via PERL, des pages du site IMDB (les films d'un acteur donné plus particulièrement) en utilisant le module Mechanize et ensuite extraire leurs textes bruts (le genre des films) avec HTML::TreeBuilder et ensuite en faire un tableau d'hachage.

    Mon code compile mais le dernier print n'affiche rien donc je pense qu'il y a un problème concernant le tableau d'hashage (%index) ou la façon dont j'ai utilisé TreeBuilder. Quelqu'un pourrait-il m'aider?

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    use LWP::Simple;
    use PerlIO::locale;
    use WWW::Mechanize::Link;
    use HTML::TreeBuilder;
    use WWW::Mechanize;
    binmode STDOUT, ':locale';
    use strict;
    use warnings;
     
    print "Entrez le nom du premier acteur: ";
    my $acteur1 = <STDIN>;
    print "Nous allons analyser la filmographie de l'acteur $acteur1 en fonction du genre\n";
     
    my $lien1 = "https://www.imdb.com/find?s=nm&q=$acteur1";
    my $mech = WWW::Mechanize->new();
    $mech->get($lien1);
    $mech->follow_link( url_regex => qr/nm0/i );
    my @url_links= $mech->find_all_links( url_regex => qr/title\/tt/i );
    my $nb_links = @url_links;
     
    my $tree = HTML::TreeBuilder->new();
    my %index;
    my $mech1 = WWW::Mechanize::Link->new();
     
    my @genres = ();
    for ( my $i = 1 ; $i <= $nb_links ; $i++ ) {
    $mech1-> url($url_links[$i]);
    $tree->parse($mech1);
    @genres = $tree->look_down (
    'class', 'see-more inline canwrap',
    sub {
    my $link = $_[0]->look_down('_tag','a');
    return 1 if $link->attr('href') =~ m{genres=};
    return 0;
    }
    );
    }
     
    foreach my $e (@genres){
    my $genre = $e->as_text;
    $index{$genre}++;
    }
     
    $tree->delete;
     
    print "Les genres de films que $acteur1 a faits (en pourcentage)\n";
    foreach my $cle (sort{$index{$b} <=> $index{$a}} keys %index){
    print "($index{$cle}/$nb_links) de sa filmographie a comme genre: $cle\n";
    }

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Up, please :'(
    J'suis en train d'avancer sur mon problème et il semble clairement se situer dans le foreach de @genres...

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Pour le "up", ta question n'est pas plus importante que celles des autres. (et puis c'est pas comme si tu étais noyé dans la masse.)

    Première chose à faire: indenter ton code:
    • ça facilite la lecture et l'identification des erreurs.
    • c'est le minimum syndicale pour ceux qui vont faire l'effort de te lire et qui accessoirement vont devoir l'indenter à ta place pour pouvoir répondre à ta question.


    use strict; et use warnings; se placent au début du code, avant les modules.

    Pour éviter de te retrouver coincé comme tu l'es, utilise l'indispensable module Data::Dumper qui te permet d'afficher les variables complexes.

    Il est tard, je regarderai ton code plus avant demain.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Pour le "up", ta question n'est pas plus importante que celles des autres. (et puis c'est pas comme si tu étais noyé dans la masse.)

    Première chose à faire: indenter ton code:
    • ça facilite la lecture et l'identification des erreurs.
    • c'est le minimum syndicale pour ceux qui vont faire l'effort de te lire et qui accessoirement vont devoir l'indenter à ta place pour pouvoir répondre à ta question.


    use strict; et use warnings; se placent au début du code, avant les modules.

    Pour éviter de te retrouver coincé comme tu l'es, utilise l'indispensable module Data::Dumper qui te permet d'afficher les variables complexes.

    Il est tard, je regarderai ton code plus avant demain.
    Salut, je suis désolé pour mon indélicatesse et je vois que un modo a mis en page correctement mon code.
    Serait-il possible de m'aider donc?

Discussions similaires

  1. Problème avec le module AI::Categorizer
    Par Pinoute dans le forum Modules
    Réponses: 0
    Dernier message: 20/07/2007, 11h50
  2. problème avec le module TK
    Par thierry7106 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 12/05/2007, 13h50
  3. Probléme avec le module turtle
    Par Newbie46 dans le forum Général Python
    Réponses: 7
    Dernier message: 15/02/2007, 21h03
  4. problème avec le module DBI
    Par vbcasimir dans le forum SGBD
    Réponses: 6
    Dernier message: 08/10/2005, 12h48
  5. problème avec un module
    Par vbcasimir dans le forum Modules
    Réponses: 2
    Dernier message: 29/08/2005, 15h59

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