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 :

Programme perl html


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Programme perl html
    Bonjour, Je travaille sur un corpus html que j'ai téléchargé pour analyser, et je voudrais rassembler l'ensemble en format .txt et le nettoyer. je voudrais faire cette tâche avec avec Perl, sauf que je ne sais pas comment procéder. Auriez-vous des idées ?
    Je vous remercie d'avance pour votre aide.
    R

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bien sûr que j'ai des idées, mais la question est beaucoup trop vague. Explique ce que tu veux faire exactement. Retirer toutes les balises HTML? Certaines seulement? Autre chose?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 94
    Points
    94
    Par défaut
    oui, c'est vague. Et aussi on ne connait pas la qualité du html de base.
    personnellement, si je devais le faire, je transformerait d'abord le html en xml, puis avec xslt et le module Libxml je le retransformerait en ce qu'on veut. Il y aurait plus de travail à la base, mais ensuite j'y gagnerais. Cela dit je suis tout ouïe pour les solutions plus simples.

  4. #4
    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 : 499 184
    Points
    499 184
    Par défaut
    Bonjour,

    Toute la problématique est dans ta propre réponse

    Citation Envoyé par vidici Voir le message
    oui, c'est vague. Et aussi on ne connait pas la qualité du html de base.
    Transformer le HTML en n'importe quoi revient à parser le HTML. Sauf que parser du HTML sans en connaitre la structure, la qualité revient à parser du XML sans connaitre le balisage et la structure, donc impossible. Le second problème majeur du HTML, c'est qu'il peut être fonctionnel (sur le navigateur) alors que le code est non propre, non strict niveau balisage, donc à parser, c'est indigeste. Donc avant de faire quoique ce soit, ta première démarche est de voir à quoi ressemble ton HTML et de prier que ce soit peut-être du xhtml .
    Sinon, pour son parsing, tu as HTML::Parser sur le CPAN.

    Pour l'analyse de fichier XML, tu as XML::Twig, XML::LbXML.

    Voilà !

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    J'ai récemment découvert, en marge de WWW::Mechanize::Query, le module Mojo::DOM. L'interface permet d'accéder à du code HTML à l'aide des sélecteurs CSS, à la façon de jQuery.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Programme perl html
    Bonsoir à tous,

    merci infiniment pour vos réponses. Je débute en programmation, mais je vais essayer de tester vos propositions. J'ai un corpus de fichier html de 3 ans de suite dans un même répértoire, et la conversion en text doit être faite automatiquement pour l'ensemble du dossier qui contient les fichier html.
    Je ferai suivre le script.

    Merci encore.
    A+

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Parcourir tout un répertoire et traiter tous les fichiers qui s'y trouvent est très facile et ne pose pas de problème. La seule difficulté peut-être peut-être la conversions proprement dite, selon la nature du HTML. Peut-être pourrais-tu poster un échantillon de ton HTML.

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Un exemple uniligne utilisant Mojo::DOM (en fait, il utilise WWW::Mechanize::Query dont la méthode dom retourne un objet Mojo::DOM) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ perl -MWWW::Mechanize::Query -E '$m = WWW::Mechanize::Query->new(); $m->get("http://www.developpez.net/forums/d1486484/autres-langages/perl/langage/programme-perl-html"); print join "", $m->dom->all_contents->grep(sub { $_->node eq "text" })'
    L'uniligne récupère la page de cette discussion ($m->get("...")), sélectionne tous les noeuds de type text du DOM HTML (all_contents->grep(sub { $_->node eq "text") et les affiche.

    Le résultat est sans doute à "retravailler" (beaucoup de retours à la ligne) et il te faudra peut-être sélectionner seulement certains éléments HTML à récupérer (fonction find utilisant le formalisme des sélecteurs CSS3, voir doc de jQuery par exemple). C'est extrêmement facile d'utilisation : une fois qu'on y a goûté, difficile de s'en passer.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci Philou et lolo!
    ne maitrisant pas encore ces notions, j'ai changé mon corpus, en téléchrageant que des fichiers XML. Je dois le traiter avec des expressions régulières pour récuprer entre autres du texte situé entre les balises, des noms propres...
    j'ai fais un petit prgm mais je n'obtiens rien à la fin!!erreur peut être dans le script?
    #
    while(<>)
    {
    if ($t=~m/<title>/ and $t !~m/:/)
    {
    $t= ~ s/<title>//;
    $t= ~ s/<\/title>//;
    $t= ~ s/^\s+//; #supprimer les lignes vides
    if ($t=~m/[A-Z][a-z]+/){print $t ;}
    }
    }
    #

    Merci encore pour votre aide!

  10. #10
    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 : 499 184
    Points
    499 184
    Par défaut
    Y a du bon et du très mauvais.
    Si tu as des XML au lieu de fichiers HTML, c'est une très bonne idée. Je te le recommande vivement. Par contre, pour les analyser, je te déconseille très fortement d'utiliser les expressions régulières.

    Bonne lecture : Perl et les fichiers XML, analyse et création des fichiers XML.

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Sauf erreur, Mojo::DOM fonctionne très bien avec du XML aussi
    Mojo::DOM - Minimalistic HTML/XML DOM parser with CSS selectors
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

Discussions similaires

  1. Interface HTML à un programme Perl
    Par farfadox dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/11/2014, 13h14
  2. Perl > html to pdf
    Par shwin dans le forum Modules
    Réponses: 8
    Dernier message: 07/10/2006, 13h36
  3. [File] Accès concurrent à un fichier avec un programme Perl
    Par dreamincoco dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 30/11/2005, 18h48
  4. Réponses: 4
    Dernier message: 16/01/2003, 14h42

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