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 :

Supprimer une partie de texte


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 35
    Points
    35
    Par défaut Supprimer une partie de texte
    Bonjour,

    Je voudrais nettoyer un texte que j'ai aspiré sur le Web.
    En fait, mon objectif est de travailler sur un article paru sur le Web. Quand j'aspire ma page, j'obtiens l'article en question mais également tous les éléments qui se trouvaient autour (sommaire, liens ...).
    Je voudrais donc à partir du titre de mon article supprimer tout ce qui se trouve au dessus.
    Est ce que quelqu'un sait comment faire ?

    J'ai trouvé le module : use String::Approx 'amatch';

    Mais je n'ai pas vraiment compris comment m'en servir.

    Merci

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Et bien, il te faut écrire une moulinette différente par site aspiré, dans le sens où toutes les mises en page sont possibles sur le net...

    Sinon, si dans le code HTML, le code est organisé de la manière suivante:

    <blabla, liens, etc>
    <titre>
    <article>

    Il te suffit de lire le fichier HTML ligne par ligne jusqu'à trouver titre, puis à partir de ce moment, écrire tout ce que tu trouves dans un 2° fichier. Néanmoins, il est très probable que tu perdes toute la mise en page, les feuilles de style CSS dépendant le plus souvent du niveau d'imbrication dans le code HTML

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    Oui voilà c'est exactement ce qu eje veux faire mais je ne trouve pas les solutions :-(

  4. #4
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Il suffit de faire une lecture séquentielle ligne par ligne, en espérant que le titre soit sur une seule ligne, et qu'il ne contienne pas d'accents ni de balises html .

    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
     
    my $filename = 'fichier.html';
    my $output = 'fichier2.html';
    my $ok = 0; # 0 avant le titre, 1 après
    open(INPUT, '<', $filename ) or die ("impossible d'ouvrir $filename en lecture");
    open(OUTPUT, '>', $output) or die ("impossible d'ouvrir $output en écriture");
     
    while (my $line = <INPUT>)
    {
      # si on est encore avant le titre, on le recherche dans la ligne courante
      if (!($ok)) { $ok = ($line =~ /$titre/); }
      # si on est sur le titre ou après le titre, on écrit dans le 2° fichier
      if ($ok)
      {
        print OUTPUT $line;
      }
    }
     
    close(OUTPUT);
    close(INPUT);
    Cette solution sera efficace seulement si
    • le titre est sur une seule ligne
    • il n'y a aucun accent dans le titre (sinon le code HTML ne correspondra pas au titre)
    • pas de balise dans le code HTML au sein du titre (ex: "le <b>gros</b> texte" ne correspondra pas à "le gros texte")

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    Super Merci maintenant il faut que je trouve une solution pour utiliser cette méthode mais en considérant que le titre est composé de plusieurs mots ...

    Merci pour ton aide !

  6. #6
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Le code que je t'ai fourni fonctionne également avec un titre de plusieurs mots, en respectant les 3 conditions données à la fin...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    Oui c'est vrai mais en fait ce que je veux faire c'est créer un prog assez générique.
    Du coup je voudrais pouvoir récup mon titre d'un fichier annexe puis l'intégrer à mon programme.

  8. #8
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Bonne chance

Discussions similaires

  1. [AC-2003] supprimer une partie de texte dans un champs
    Par ROUSSIGNE dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/11/2012, 08h55
  2. Supprimer une partie des informations d'un champ TEXT
    Par Athos77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/12/2010, 10h02
  3. Supprimer une partie du texte
    Par djuls dans le forum Langage
    Réponses: 5
    Dernier message: 25/08/2010, 22h30
  4. [JTextField] Supprimer une partie du texte
    Par jean_bobi dans le forum Composants
    Réponses: 4
    Dernier message: 26/09/2005, 16h22
  5. [VBA][Excel]Supprimer une partie du texte d'une grosse liste
    Par annedeblois dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/09/2005, 18h15

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