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

Shell et commandes GNU Discussion :

[bash]Traitement d'un fichier txt/html


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut [bash]Traitement d'un fichier txt/html
    Bonsoir à tous,

    Je cherche à extraire plusieurs informations d'un site (dans mon exemple Allociné).

    Après avoir récupéré le code de la page en html dans un fichier .txt je souhaite en extraire plusieurs informations : titres, notes synopsis et images pour à terme en refaire un fichier html (sans css derrière)
    J'ai cependant 2 problèmes majeurs :
    - comment extraire les images correspondantes aux films ? Pour ça je n'ai pas la moindre idée en dépit de mes recherches sur internet.
    - pour le moment j'ai réussi à extraire les titres et les synopsis des films, mais dans deux fichiers différents que je dois ensuite concaténer en un seul et je trouve ça lourd. Existe-t-il un meilleur moyen de faire cela sans passer par des fichier temporaire ?

    Merci d'avance pour votre aide et ci-dessous mon code pour les titres et synopsis :

    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
     
    egrep meta-title-link Alloci*.txt | grep "<a" | cut -d\> -f2 | cut -d\< -f1 | sed -re "s/'/\'/g" > SUPER_TITRES.txt
    sed -n '/<div class="content-txt ">/,/<div class="rating-holder">/p' Alloci*.txt | sed '/</d' | sed 's/^[ \t]*//;s/[ \t]*$//' | sed '/^$/d' > GENIAL_SYNOPSIS.txt
     
    nb=$(echo $(echo `wc -l SUPER_TITRES.txt`) | cut -d' ' -f1)
    for (( i=1; i<=$nb; i++));
    do
    	ligne=$i
    	titre=`sed -n ${ligne}p SUPER_TITRES.txt`
    	desc=`sed -n ${ligne}p GENIAL_SYNOPSIS.txt`
    	echo "$titre" >> NUL.html
    	echo " " >> NUL.html
    	echo "$desc" >> NUL.html
    	echo " " >> NUL.html
    done
    Le fichier titres ne contient que les titres l'un en dessous de l'autre et pareil pour le fichier synopsis.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    Après avoir récupéré le code de la page en html dans un fichier .txt
    pourquoi ne pas garder l'extension html ?

    peu importe.
    n'essaye pas de tri/orturer du html en shell, c'est une perte de temps inutile; utilise tout de suite python et beautifulsoup.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par Chadoxis Voir le message
    Existe-t-il un meilleur moyen de faire cela sans passer par des fichier temporaire ?
    rien ne t'oblige à stocker le résultat de tes manips dans des fichiers, donc oui très certainement, et même possiblement tout faire en une seule commande et sans aucun fichier

    tu peux donner une url allocine pour l'exemple stp ?

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut
    Merci de vos réponses,

    n'essaye pas de tri/orturer du html en shell, c'est une perte de temps inutile; utilise tout de suite python et beautifulsoup.
    En fait je suis obligée de le faire en .sh d'après mon énoncé, sinon je l'aurai fait sur python que je maitrise bien mieux

    rien ne t'oblige à stocker le résultat de tes manips dans des fichiers, donc oui très certainement, et même possiblement tout faire en une seule commande et sans aucun fichier
    Je me doute bien que je ne suis pas obligée, mais avec le fonctionnement de grep sed et cut je n'arrive pas à les récupérer dans le même fichier dans l'ordre. C'est à dire que je pourrais mettre les synopsis dans le fichier titre, mais ils serais alors à la suite au lieu d'intercaler un titre et le synopsis correspondant.


    url : http://www.allocine.fr/film/agenda/sem-2018-12-19/

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    alors, commence par le début : comment lire un fichier en shell

    et puis sed est un vrai langage, pas une simple commande.
    d'ailleurs quand tu vois qu'une commande est pipée vers une autre instance d'elle-même, c'est qu'il y a quelque chose qui ne va pas.

    avant de coder, il faut rédiger un algorithme, qui servira de base aux commentaires qui doivent figurer dans un script.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut
    Je ne comprends pas trop, il faut savoir que je suis vraiment débutante en codage, et mon fichier html (ou txt) est obtenu à l'aide d'un curl, donc il fait 6000 lignes et est absolument imbuvable.

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Citation Envoyé par Chadoxis Voir le message
    En fait je suis obligée de le faire en .sh d'après mon énoncé,
    Et ben alors ? Ce sont les professeurs qui demandent de piller allo-ciné ?
    C'est pas bien, ça.

    Et perl ? Tu as le droit à Perl ?

    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
    $ wget -q -O - http://www.allocine.fr/film/agenda/sem-2018-12-19/ | sed -n '/class="meta-title-link"/s/.*">\(.*\)<.*/\1/p'
    Le Retour de Mary Poppins
    Aquaman
    L'Empereur de Paris
    Le Gendre de ma vie
    Wildlife - Une saison ardente
    Maya
    The Happy Prince
    The Bookshop
    Grass
    Mon père
    Basquiat, un adolescent à New York
    L'Oeil du tigre
    La Huitième femme de Barbe Bleue
    New York 1997
    Le Petit monde de Bahador
    De boue
    Sonar
    A toi d'adapter.

  8. #8
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    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 986
    Par défaut
    T'as le droit d'utiliser tidy et xsltproc (outils en ligne de commande mais pas forcément installés de base)?

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 14
    Par défaut
    Et perl ? Tu as le droit à Perl ?
    Euuuh perl ?

    En fait ton code fait ce que je faisais déjà mais en mieux :p ! Moi j'aimerais réussir à extraire les titres ET les synopsis sans passer par des fichiers temporaires.

    Et je n'ai toujours pas la moindre piste concernant la récupération des images..

    Merci d'avance pour votre aide.


    T'as le droit d'utiliser tidy et xsltproc (outils en ligne de commande mais pas forcément installés de base)?
    Je ne sais pas de tout ce que tu entends par là, je dois coder un fichier tp.sh qui fait des trucs sur des sites...

Discussions similaires

  1. Traitement d'un fichier txt
    Par anass_59 dans le forum Général Python
    Réponses: 15
    Dernier message: 23/06/2009, 11h13
  2. Réponses: 93
    Dernier message: 15/04/2009, 15h34
  3. traitement d'un fichier txt
    Par arezki76 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 22/06/2007, 14h36
  4. Réponses: 9
    Dernier message: 03/01/2007, 17h06

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