• [^] # Re: entrée

    Posté par . En réponse au message extraction sur page html. Évalué à 1.

    Je vais tenter d'etre le plus clair possibe. Mais plus je pense a cet objectif et plus j'ai l'impression de m'eagarer.

    J'ai resolu mon probleme par un script bash que je publie plus bas. Je dois avouer que mon probleme etait assez long a expliquer. Surtout que les documents dont j'ai parlé ne figurent sur aucune page sur le web.Je passe par plusieurs etape en utilisant text2html, gedit, un script fais maison, gnumeric (pour structurer avec des separateurs) et enfin phpmyadmin pour construire mes tables mysql.

    "Je dois avouer que je n'ai pas compris toute ton histoire sur les differents formats que tu as. Tu veux dire que tous les documents html n'ont pas la même structure ?"

    je n'est pas parlé de format
    j'ai parlé de structure au niveau de l'enregistrement des informations, la maniere dont les livres sont copié dans le fichier html
    «
    NOM DE L'AUTEUR

    titre du document (en gras)

    resumé du document (paragraphe normale)

    editeur annee de sortie (en gras)

    » (sur des centaines de pages)

    -------------------------------------------------------------

    Il ya des fois où un de ces paragraphes manque, je voulais pouvoir extraire les donnees du fichier html(par ma premiere idee un script bash, j'ai reussi grace a l'outil recommande 'html2text' plus haut ou avec un parseur comme recommande) puis les classer dans un fichier texte structuré, je remplaces les sauts de ligne par des ' @' à l'aide de gedit. j'obtiens:
    auteur@titre_doc@resumé@infos_editeur@)

    exemple:
    "Sandra J. ALBERT@14 février Saint-Valentin@Dans un bureau de placement de New-York dont les affaires ne vont plus très bien, les employées traitent plus de leurs problèmes personnels qu'elles ne font avancer les dossiers ! Et leurs affaires de c1⁄2urs en particulier vont remonter à la surface ce 14 février, jour de la St Valentin.@Comédie psychologique avec 7 personnages : 7 femmes - Editions de la Traverse / décembre 1997@Jean-Paul ALEGRE@La Ballade des planches@« La Ballade des planches » se compose, comme « Sur un plateau » d’une série de courtes pièces sur les situations absurdes qui peuvent se produire sur un plateau ayant pour seul thème : le théâtre. L’histoire qu’elles racontent est celle que les troupes, professionnelles ou non, vivent au rythme des saisons, - théâtrales bien entendu. Les comédiens plongent dans un méli-mélo de personnages et d’intrigues, parce qu’ils sont à la recherche « de la bonne réplique » plutôt que du bon texte, spéculant sur la longueur du rôle et non sur la qualité dramatique. Ce qui nous vaut six comédies, la loufoque : « Dernière répétition », une inénarrable : « Le petit chemisier », la grotesque : « Vivons heureux en attendant la mort », la satirique : « Soyons bref », la burlesque : « C’est dur de faire l’Europe » qui invente un idiome latino-gréco-slavo-anglo-saxon des plus réjouissants, et une fantastique : « Les explorateurs », le tout assaisonné des « chants » du matériel. Quand les projecteurs auront été « débranchés », le tube de fond teint « revissé », la « planche qui craque » « rabotée », le « vieux rideau » « démonté », les costumes « rangés », les messages publicitaires passés, au détriment des pièces, que restera-t-il de la création sinon le rire ? Les scènes sont reliées par des chants, mais chacune des pièces peut-être jouée de manière indépendante.@Comédie avec une distribution évolutive de 3 à 20 personnages - Editions L’Avant-Scène n° 1004 / 15 février 1997@Jean-Paul ALEGRE@C’est Jean Moulin qui a gagné !@Le nom de Jean Moulin s’inscrit au fronton des écoles et sur les plaques des rues de nos villes. Aujourd’hui, il existe des petits Mathieu, Stéphane, Patrice, Djamel, William et Maxime, des collégiens passionnés de foot, qui savent confusément que Jean Moulin est un grand résistant, mais qui ne connaissent pas bien les événements historiques. Or, Jean Moulin était aussi un haut fonctionnaire intègre, un caricaturiste de renom, un homme qui aimait les femmes, la musique, la poésie, la peinture, la vie tout simplement... Mais il a croisé un certain Klaus Barbie, le 21 juin 1943...@Drame historique avec 30 personnages - Editions L’Avant-Scène n° 1085 /1er mars 2001@Jean-Paul ALEGRE@"


    , puis ensuite les importes sur une base de donnee mysql en utilisant CSV par phpmyadmin et les fonctions d'importation de gnumerique pour les separateurs.

    je vous met le script, il est assez long mais me permet d'extraire les champs depuis du texte brut et de classer les infos par un jeu de redirection, juste avant d'importe dans phpmyadmin.

    Le scripts contient beaucoup d'erreurs mais fonctionne quand meme (je l'ai ecrit).
    Il demande a chaque fois si le champs du texte extrait est un "auteur, titre, resume ou autre". Moi je reponds, et le script positionne le champ en question dans un fichier de sortie (celui qui servira a l'importation mysql).



    un exemple du resultat attendu par le script, le separateur choisi est le "|":

    Module|Sous-partie|Auteur|Titre|Resume|Info-supplementaire|
    THEATRE ET JEUNESSE|Pédagogie|Sylvette Pagan|Maquillages d’enfants|Du bout des mains, devenez un peu fée avec Sylvette Pagan et toute sa troupe. Des maquillages bavards, des maquillages coquins, des costumes faciles et colorés, des perruques, des postiches pour tous les enfants les plus sages et les plus délurés.|Editions Fleurus Idées / 1989 / 48 pages|
    THEATRE ET JEUNESSE|Pédagogie|SNAZAROO|Maquillages en cinq minutes|Réussissez comme un professionnel de superbes maquillages de fête en moins de cinq minutes ! Ce livre vous présente une méthode simple et rapide pour transformer les enfants en Pierrot et en clown, en princesse ou en sorcière. Le succès est garanti pour toutes les fêtes : Carnaval, anniversaires, kermesses, et... Vous trouverez dans ce livre : 30 modèles facile à faire ; des photos couleur de chaque maquillage ; un guide du matériel à employer ; des conseils techniques ; des idées toutes simples pour réaliser les accessoires indispensables.|Editions Fleurus Idées / 1992 / 46 pages|
    THEATRE ET JEUNESSE|Pédagogie|Association Nationale de Recherche et d’Action Théâtrale en Milieu Scolaire et Universitaire|L’Enfant, le jeu, le théâtre - Autour des pratiques dramatiques à l’école primaire|Les activités théâtrales et dramatiques se développent en milieu scolaire : classes d’ini­tiation, ateliers, options, formations... Qu’en est-il des pratiques avec des jeunes enfants, à l’école élémentaire ? Quels sont les enjeux, les écueils, les perspectives dans ce domaine ? Exemples, points de vue, témoignages, réflexions.., sont rassemblés dans ces deuxièmes « Cahiers Théâtre/Education » proposés par L’ANRAT (Association Nationale de Recherche et d’Action Théâtrale).|Edition Actes Sud-Papiers / 1990 / 84 pages|
    ........................................

    Mon probleme:
    Il peut manquer des champs dans le document, c'est pour ca que j'ai ecrit le script, celui ci remplace les champs manquants par 'XXX'





    voici le script:

    #extrait les champs auteur,titre,categorie,infos generales
    #sytaxe $fic ./entete ./theme ./info
    #1 prends l'entete de la table (fichiers entete, paramettre 1)
    #2 prends les premieres rubriques content le module et la sous partie (fichier theme parametre 2)
    #3 recupere les champs sur le texte brut (parametre 3)
    #4 sortie de la table au complet (sur le fichier table)

    clear
    echo structure du fichier
    cat ./1ドル
    echo $(cat ./1ドル)>table

    cpt=1
    cpt_champ=0
    fin="EOF"

    #infos_divers="*"
    auteur="*"
    titre="*"
    resume="*"
    infos_sup="*"
    dernier_champ_traite=""
    est_ligne_copie="vrai"
    res=$(cat 2ドル)

    while [ "$champ" != "$fin" ]
    do

    champ=$( cat 3ドル | grep "@" | cut -d "@" -f $cpt )

    if [ "$champ" != "$fin" ]
    then
    echo " "
    echo $champ
    echo Que faire du champ? \(i\/num de position \(1,2,3,4\) \/v \(vide\)\/c \(concatener\)\/n \(nouvel enregistrement\)\)

    read choix

    case $choix in
    i) echo ignore;;
    v) echo champ vide;res=$res\*\|;dernier_champ_traite="";cpt_champ=$(expr $cpt_champ + 1);echo $res;;
    c) echo concatene;res=$res$dernier_champ_traite$champ;;
    n) echo nouvelle ligne;dernier_champ_traite="";auteur="";titre="";champ="";est_ligne_copie="faux";res="";;
    1) res=$res$champ\|;auteur=$champ;dernier_champ_traite=$auteur;cpt_champ=$(expr $cpt_champ + 1);;
    2) res=$res$auteur\|$champ\|;titre=$champ;dernier_champ_traite=$titre;cpt_champ=$(expr $cpt_champ + 1);;
    3) res=$res$auteur\|$titre\|$champ\|;resume=$champ;dernier_champ_traite=$resume;cpt_champ=$(expr $cpt_champ + 1);;
    4) res=$(cat 2ドル)$auteur\|$titre\|$resume\|$champ\|;infos_sup=$champs;dernier_champ_traite=$infos_sup;cpt_champ=$(expr $cpt_champ + 1);est_ligne_copie="faux";;
    #'@' marque une ligne invalide
    *) echo choix invalide!;dernier_champ_traite="";auteur="";titre="";champ="";est_ligne_copie="vrai";res="";echo @>>./table;;
    esac

    cpt=$(expr $cpt + 1)
    fi

    if [ $cpt_champ -eq 4 ]
    then
    est_ligne_copie="faux"
    fi

    if [ "$est_ligne_copie" != "vrai" ]
    then
    echo $res>>./table
    est_ligne_copie="vrai"
    cpt_champ=0
    fi

    if [ "$champ" != "$fin" ]
    then
    echo ligne a copier\: $res
    fi
    done


    ------------------------------------------------------------------------------------------------
    MERCI BEAUCOUP A CEUX QUI M'ONT LU, MERCI POUR VOS COMMENTAIRES j'ai mis le script pour bien me faire comprendre, j'espere que c'est reussi ;-). DESOLE POUR LES FAUTES D'ORTHO.