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 :

HTML::Parser vs HTML::PullParser vs HTML::TokePaser


Sujet :

Web Perl

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut HTML::Parser vs HTML::PullParser vs HTML::TokePaser
    Voici mon souci brievement...
    Je voudrais extraire le titre d'une page web en ligne.
    Me semble que les 3 modules cités en titre peuvent me faire ca mais lequel choisir, lequel est le plus adapté?
    Je me demandais si il ne serait pas plus simple de faire une bete regexp mais bon ...
    Merci!

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    c'est sur que si tu souhaite uniquement le titre d'une page, une regex suffit

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par epiphyte
    Voici mon souci brievement...
    Je voudrais extraire le titre d'une page web en ligne.
    Me semble que les 3 modules cités en titre peuvent me faire ca mais lequel choisir, lequel est le plus adapté?
    Je me demandais si il ne serait pas plus simple de faire une bete regexp mais bon ...
    Merci!
    Ben à vrai dire pour parser du HTML d'habitude je conseille de ne pas tenter le diable en utilisant des regex, mais pour un besoin aussi simple que d'extraire le titre de la page (tu parles bien de celui qui est entre les balises <title> ?), une regex peut bien suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m{<title[^>]*> (.*?) </title}ixs
    Quand au choix d'un Parser HTML, il dépend beaucoup de tes goûts, chacun d'entre eux présente sa propre interface, HTML:: Parser est basé sur des callbacks, HTML:: PullParser fournit une chaîne de token, et HTML::TokeParser est un HTML:: PullParser avec des défauts pratique dans la plupart des cas (sauf exception, il est plus simple d'utiliser TokeParser que PullParser).

    --
    Jedaï

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Jedai
    Ben à vrai dire pour parser du HTML d'habitude je conseille de ne pas tenter le diable en utilisant des regex, mais pour un besoin aussi simple que d'extraire le titre de la page (tu parles bien de celui qui est entre les balises <title> ?), une regex peut bien suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m{<title[^>]*> (.*?) </title}ixs
    Jedaï
    oK! Merci bien! un truc m'echape dans ta regexp, je ne vois pas pourquoi tu n'as pas simplement fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m{<title> (.*?) </title}ixs

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par epiphyte
    oK! Merci bien! un truc m'echape dans ta regexp, je ne vois pas pourquoi tu n'as pas simplement fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m{<title> (.*?) </title}ixs
    Je me suis posé la question (il n'y a aucun attribut qu'on puisse accrocher à une balise title à ma connaissance), mais autant minimiser au maximum (sic) la fragilité de la regex, on peut toujours imaginer qu'un utilisateur laisse traîner un espace dans sa balise title... Vu le faible effort supplémentaire que cela représente, j'ai décidé de me prémunir contre ce risque. Il est vrai que cela pèse un peu sur la lisibilité de la regex, à toi de voir.
    De même, n'oublie pas de faire subir un trim() (programmé de tes mains) à ton titre après sa récupération, car pas mal de page le mette sur une ligne par lui-même (il y aura donc des sauts de ligne intempestif dans la valeur récupérée).

    --
    Jedaï

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

Discussions similaires

  1. [HTML] parser du HTML
    Par defdef dans le forum Web
    Réponses: 1
    Dernier message: 07/04/2007, 18h01
  2. Besoin d'un coup de main avec HTML::Parser
    Par mobscene dans le forum Modules
    Réponses: 1
    Dernier message: 09/12/2006, 15h49
  3. [XSLT] Parser xml pour une transformation html
    Par sucben dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/11/2006, 11h35
  4. HTML Parser
    Par SkyDev dans le forum Web
    Réponses: 1
    Dernier message: 21/08/2006, 16h38
  5. Utilisation de HTML::Parser
    Par mobscene dans le forum Web
    Réponses: 6
    Dernier message: 27/10/2005, 13h57

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